1、Messenger类的说明
Messenger类来扩充IBinder接口机制,让其能跨进程地将Message对象传递到另一个进程里,给其主线程(又称UI线程)。
由于Message类实现(Implement)了Parcelable接口,所以Messenger类可以透过IBinder接口而将Message对象传送到另一个进程里的MessengerImpl类。然后,透过Handler而将Message对象丢入UI线程的MQ里,让UI线程来处理之。由于是同步(依序)处理信息,所以myService 类的开发者,不必顾虑多线程冲突的安全议题,减轻开发者的负担。

2、Messenger单项传递数据
Messgener的两个构造方法:
public Messenger(Handler target) {mTarget = target.getIMessenger(); }//service端使用
public Messenger(IBinder target) {mTarget = IMessenger.Stub.asInterface(target);}//client端使用


3、Messener双向传递数据



4、Messenger和AIDL区别
a、Messenger在服务端处理信息是通过Handler丢到主线程的MQ当中,因此是单线程的串行处理,不支持多线程在service端处理传递过来的数据,
b、Messenger只能用来传递数据,调用service端的方法需要AIDL


网友评论