初识Android中的IPC机制(1)————使用Messenger

来源:互联网 发布:厄米特矩阵的逆也是 编辑:程序博客网 时间:2024/05/29 12:07

Android开发过程中,IPC(跨进程通信)的技术并不常用,但是在一些特殊情况下确实要用到,而且很重要,比如通过开启一个进程来增加App的可用内存等。同时在面试的过程中也有可能被问到,所以,学习IPC还是很重要的。(因为笔者时间有限,本文仅提供最简单的实现方案,并不深究,兴趣的同学请参考任玉刚大神的《Android开发艺术探索》)

Messenger实现跨进程通信总体来说还是比较简单的,他对AIDL进行了封装,开发者易于使用,有点自然是使用简单,缺点是不能很好的处理多并发,不支持RPC。

下面是实现方法:

创建服务端(运行在其他进程中的Service):
这里写图片描述
这是完整的服务端写法,当然我们需要在清单文件中声明改Service,同时指明改Service所运行的进程。
代码中,在服务端创建课一个Messenger,传入了一个Handler,在onBinder方法中返回给了客户端。Handler中的handle方法用来处理来自客户端的消息。同时通过客户端传来的Message拿到客户端的Messenger(msg.replyTo),使用这个Messenger来想客户端发送消息。

下面来看客户端的写法:
这里写图片描述
首先和普通的链接服务操作一样,创建一个ServioceConnect实例,不同的是我们需要在onServiceConnected方法里面获取到服务端的Messenger,然后使用send方法将封装好的Messenge发送到服务端。但是此处要注意,在发送之前,我们要创建一个客户端的Messenger指定给Messenge的replyTo属性,要不然服务端的获取客户端的Messenger时为空。

Android小白不会写Blog,加上时间紧,写博客纯属温习知识,想学习更多建议精度任玉刚大神的《Android开发艺术探索》

0 0
原创粉丝点击