看了《android开发艺术探索》第二章总结一下
IPC的方式有
- Bundle
- AIDL机制
- Messenger
- ContentProvider
- 文件共享
bundle
只能传输Bundle支持的数据,只能用于四大组件间的进程间通信
AIDL机制
详情可以看我的service那篇文章
Messenger
这个是一个android系统为我们封装的Binder的一个AIDL
个人感觉(有点类似socket那样进行双方通信)
代码我就不去as中复制了,这里写一下伪代码
Messenger中有两个构造方法,一个是用handler
首先是新建一个Service,在里面弄一个handler,
然后新建一个Messager,然后在Messenger的构造方法上传入handler,这样就在handler中处理客户端传来的消息
服务端想要返回消息,就通过Message.replyTo返回的Messager
通过Messenger.send给客户端发消息。
至于客户端就绑定service,因为Messenger 的另一个构造方法中就是传入IBinder,这样构造的出来的Messenger对象就调用messenger.send();
对于客户端接收服务器返回的消息 就像是在Service中一样创建一个Messenger,handler,然后就可以接收数据了
,这时候 就有一个疑问 这是完全两个不同的Messenger,客户端,服务端的,它们是怎么联系起来的呢,就是通过客户端的Messenger.send(Message) 里面那个
Message.replyTo 将它赋值为客户端接收服务端的Messager
这样就联系上了
messenger 适合一个个消息传递,不适合高并发
Socket
就是Socket通信。。不多讲了,大家网上看吧
文件共享
就是创建一个本地文件,大家读写
ContextProvider
这个 其实本质上可以认为是本地文件读写。就是共享数据库达到跨进程
总结
这是我读书的一个简单总结,坚决不推荐作为学习跨进程通信个人学习资料,这只是一个总结,一个抽取重要知识点的大家想要了解,还是要去读书,看官网,写代码.