Messenger 信使

概述

通过Messenger 我们可以在不同的进程中传递 Message 对象,在Message中放入我们需要传递的数据,就可以轻松地实现进程间通信了。Messenger是一种轻量级的IPC方案,它的底层实现是AIDL,我们可以看下Messenger的构造方法就明白了。从构造方法我们可以明显看出AIDL痕迹,不管是IMessenger还是Stub.asInterface,这种使用都表明它的底层是AIDL。

public Messenger(Handler target) {
    mTarget = target.getIMessenger();
}
    
public Messenger(IBinder target) {
    mTarget = IMessenger.Stub.asInterface(target);
}

Messenger的使用方法很简单,它对AIDL做了封装,使得我们可以更简便地进行进程间通信。同时,由于它一次处理一个请求,因此在服务端我们不用考虑线程同步的问题,这是因为服务器不存在并发执行的情形,服务器以串行的方式处理客户端发来的消息。


Messenger中进行数据传输必须将数据放入Message中,而Messenger和Message都实习那了Parcelable接口,因此可以跨进程通信。


优缺点

优点:

  • 简单

缺点:

  • 服务器以串行的方式处理客户端发来的消息,如果大量的消息同时发送到服务器,服务器仍然只能一个个处理,那么用Messenger就不合适了。
  • Messenger的作用是为了跨进程传递消息,很多时候我们可能需要跨进程调用服务端的方法,这种情形用Messenger就无法做到了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容