使用iBinder 和 ServiceConnection 间的通信是Activity 与Service之间的通信。
而如果要进行不同进程间的通信就要使用到AIDL.
远程启动服务, 如果 进程A 要启动进程B的Service ,需要使用阴示意图,被操作服务中添加意图
<intent-filter>
<action android:name="com.example.servicedemo.MyService"></action>
</intent-filter>
远程启动服务:
Intent intent = new Intent();
intent.setAction("com.example.servicedemo.MyService")
startActivity(intent);
远程关闭服务:
Intent intent = new Intent();
intent.setAction("com.example.servicedemo.MyService")
stopActivity(intent);
远程绑定服务:
Intent intent = new Intent("com.example.servicedemo.MyService");
bindService(intent,new ServiceConnection(),CREATE_BIND_AUTO);
远程解绑服务:
unbindService(conn);
跨进程数据共享 , 使用AIDL,
被操作Service 包中创建aidl 文件 ,同包下右键 new aidl 接口中新建业务方法,build -> makeProject
....
网友评论