Messenger 信使

2016-07-26  本文已影响34人  jacky123

概述

通过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接口,因此可以跨进程通信。


优缺点

优点:

缺点:

上一篇 下一篇

猜你喜欢

热点阅读