android 使用AIDL实现进程间通讯
一、创建服务端
1、首先创建AIDL文件
2、创建service,绑定AIDL接口
3、配置service
<service android:name=".AidlService" android:enabled="true" android:exported="true" > <intent-filter android:priority="1000"> <action android:name="AIDL.service"></action> </intent-filter> </service>
4、开启service和打开ServiceConnection
Intent intent=new Intent(getApplicationContext(),AidlService.class); bindService(intent,serviceConnection,BIND_AUTO_CREATE);
----------------------------------------服务端创建完毕-------------------------------------------------------------
二、创建客户端
1、同样开始创建AIDL文件——与服务端的AIDL文件一样(复制即可)
2、创建serviceConnection
private ServiceConnection serviceConnection=new ServiceConnection() { @Override public void onServiceConnected(ComponentName componentName, IBinder iBinder) { Toast.makeText(getApplicationContext(),"已连接服务器",Toast.LENGTH_LONG).show(); iAidlInterface=IAidlInterface.Stub.asInterface(iBinder); try { iAidlInterface.asBinder().linkToDeath(mDeathRecipient, 0); iAidlInterface.registerCallBack(iAidlCallBack); messages.addAll(iAidlInterface.getMessages()); listView.setAdapter(arrayAdapter=new ArrayAdapter<>(getApplicationContext(),android.R.layout.simple_list_item_1,messages)); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onServiceDisconnected(ComponentName componentName) { } };
3、开启绑定服务端的service连接serviceConnection
Intent intent=new Intent(); String ACTION = "AIDL.service"; intent.setAction(ACTION); intent.setPackage("com.dlc.mytestttt"); bindService(intent,serviceConnection,BIND_AUTO_CREATE);