实现注意点:
1、
<service android:name=".MyService" android:process=":remote" =》service要运行在其他进程
<intent-filter> <action android:name="com.myservice.action" /> </intent-filter>
</service>
2、发送自定义复合类型
// 发送
bundle.setClassLoader(SelfObject.class.getClassLoader());
bundle.putParcelable("self_object", new SelfObject());
msg.setData(bundle);
// 接收
bundle.setClassLoader(getClass().getClassLoader());
SelfObject so = bundle.getParcelable("self_object");
在相同应用,不同进程间;不同应用,不同进程间(自定义复合类型的路径、名称要一致),都可以正常传递
3、发送framework自带的、可以Parcelable序列化的复合类型,不需要设置ClassLoader,比如ContentValues类型
4、发送端发送Message时,在Message的replyTo成员变量中,设置receiveMessenger;
接收端收到该message后,可以使用该receiveMessenger发送响应消息给发送端,实现交互。
5、framework层的AsyncChannel,就是封装了Messenger,可以实现不同进程间Handler之间的消息传递,使用的地方很多;
(Messenger实际上是对aidl的简单封装)
=》有些细节还不是很清楚,需要继续深入些
参考:
http://byandby.iteye.com/blog/1027705
http://blog.csdn.net/cs_lht/article/details/6698468
http://blog.csdn.net/wqunwang506/article/details/7927922
本文详细解析了Android环境下实现服务在不同进程间通信的方法,包括配置服务运行在远程进程、发送自定义复合类型、使用framework自带可序列化类型、设置消息回复通道等关键步骤,并提供了实例代码说明。

291

被折叠的 条评论
为什么被折叠?



