android 使用AIDL实现进程间通讯

一、创建服务端

 

1、首先创建AIDL文件

android 使用AIDL实现进程间通讯

 

2、创建service,绑定AIDL接口

android 使用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);

demo实现:https://download.****.net/download/meixi_android/12347788