实现注意点:
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