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

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

总结

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

你可能感兴趣的:(IPC机制总结)