Aidl传递参数类型
1.基本数据类型(除short类型)
2.String、charSequence
3.List,map
4.parcelable
服务端:
第1步:定义一个*.aidl文件,然后 make project
interface IMyAidlInterface { String getName(); }
第2步:定义一个自己的service
public class MyService extends Service { public MyService() { } @Override public IBinder onBind(Intent intent) { return new MyBinder(); } class MyBinder extends IMyAidlInterface.Stub { @Override public String getName() throws RemoteException { return "test"; } } }
第3步:记得注册服务
<service android:name=".MyService"> <intent-filter> <action android:name="com.example.calculate.CalculateService" /> </intent-filter> </service>
这样服务端就好了,下面客户端
aidl位置要保持一致,客户端和服务端aidl包名一定是一样的
客户端使用service
Intent intent=new Intent("com.luo.mytaobao"); intent.setAction("com.example.calculate.CalculateService"); intent.setPackage("com.luo.mytaobao"); bindService(intent, new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { iMyAidlInterface = IMyAidlInterface.Stub.asInterface(service); } @Override public void onServiceDisconnected(ComponentName name) { } }, BIND_AUTO_CREATE); } public void onClick(View view) { try { Toast.makeText(MainActivity.this, iMyAidlInterface.getName(), Toast.LENGTH_SHORT).show(); } catch (RemoteException e) { e.printStackTrace(); } }