IPC机制总结

看了《android开发艺术探索》第二章总结一下
IPC的方式有

  1. Bundle
  2. AIDL机制
  3. Messenger
  4. ContentProvider
  5. 文件共享

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

这个 其实本质上可以认为是本地文件读写。就是共享数据库达到跨进程

总结

这是我读书的一个简单总结,坚决不推荐作为学习跨进程通信个人学习资料,这只是一个总结,一个抽取重要知识点的大家想要了解,还是要去读书,看官网,写代码.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容