Android 进程间通信

作者: zidea | 来源:发表于2018-11-18 18:26 被阅读45次

两个不同进程中的两个线程进行通讯,并没有那么简单,这是因为两个独立的进程不能共享内存,这样一来 Handler 对象不能在两个线程上执行来实现通讯。

这时候 Binder 登场了,可以帮助我们实现跨进程的通讯。可以说 Binder 是 Android 底层系统的一个特色了,它很好地解决了进程间通讯的问题。

我们就来看看是如何通过 Binder 这个机制来实现跨进程通信的。

RPC框架远程调用的实现方式在原理上是比较简单的,即将调用的方法(接口名、方法名、参数类型、参数)序列化之后发送到远端,在远端反序列化之后调用接口的实现类的方法(接口主要是为了使用动态代理)。

所以我们在实现RPC框架的时候需要选择合适的序列化与反序列化方式

AIDL 是接口定义语言,AIDL的作用是让你可以在自己的APP里绑定一个其他APP的service,这样你的APP可以和其他APP交互

通过一个小示例,我们来解释一下是如何实现跨进程通讯的

然后创建我们需要service

如果这找不到刚刚创建好的 IRemoteInterface 可以重新构建项目 Build > Rebuild Project。然后就能找到了

大家可以自己测试一下。

彩蛋

别走开,还有另一种方法,来实现发送方法和数据给远端的进程,就是使用 Messager 对象,这显得更容,但是由于是单线程,因此也更慢。一个 Messager 对象持有对他所在进程中的 Handler 的引用,然后另一个进程进一步对他进行处理。

相关文章

网友评论

    本文标题:Android 进程间通信

    本文链接:https://www.haomeiwen.com/subject/wligfqtx.html