美文网首页安卓考点脉络
【多进程通信】AIDL、Messenger、广播

【多进程通信】AIDL、Messenger、广播

作者: 小呀么小黄鸡 | 来源:发表于2018-02-24 09:47 被阅读37次
    1. AIDL
    2. Binder
    3. Messenger
    4. HermersEventBus

    进程通信(binder/AIDL/Messenger)Binder机制最重要

    Android几种进程

    可以看到,AIDL的核心原理其实就是我们定义的AIDL文件会编译时生成一个Java接口文件,这个文件包含了客户端、服务端的所有操作。

    Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信。为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现。与很多其他的基于RPC的解决方案一样,Android使用一种接口定义语言(Interface Definition Language,IDL)来公开服务的接口。

    它引用了一个Handler对象,以便others能够向它发送消息(使用mMessenger.send(Message msg)方法)。该类允许跨进程间基于Message的通信(即两个进程间可以通过Message进行通信),在服务端使用Handler创建一个Messenger,客户端持有这个Messenger就可以与服务端通信了。
    以前我们使用Handler+Message的方式进行通信,都是在同一个进程中,从线程持有一个主线程的Handler对象,并向主线程发送消息。
    而Android既然可以使用binder机制进行跨进程通信,所以我们当然可以将Handler与binder结合起来进行跨进程发送消息。

    • 广播
      避免使用隐式intent广播传递敏感信息,信息可能被其他注册了对应broadcastReceiver的App接收。
      如果广播仅限于应用内,则可以使用LocalBoradcastManager#sendBroadcast实现,避免敏感信息外泄和Intent拦截风险,安全性更好,运行效率更高。

    相关文章

      网友评论

        本文标题:【多进程通信】AIDL、Messenger、广播

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