美文网首页
Messenger跨进程传递数据

Messenger跨进程传递数据

作者: JasonHwang | 来源:发表于2020-02-06 18:03 被阅读0次

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端使用

service端代码 client端代码

3、Messener双向传递数据

通过message.replyTo = aMessenger将包含Binder接口的Messenger传递给Service cbMessenger = msg.replyTo获取Meesenger对象,  myService接到传递过来的IBinder接口时, 就诞生一个新Messenger对象,并将该 IBinder接口存进去。myService就能调用 该新Messenger对象的send()函数,把 Message对象传递到myActivity端了

4、Messenger和AIDL区别

a、Messenger在服务端处理信息是通过Handler丢到主线程的MQ当中,因此是单线程的串行处理,不支持多线程在service端处理传递过来的数据,

b、Messenger只能用来传递数据,调用service端的方法需要AIDL

service端使用多线程处理消息时,使用AIDL service端不需要多线程处理消息时使用Messenger

相关文章

  • Messenger跨进程传递数据

    1、Messenger类的说明 Messenger类来扩充IBinder接口机制,让其能跨进程地将Message对...

  • IPC 使用Messenger实现进程间通信

    Messenger可以译为信使,可以在不同进程间传递Message对象。将我们需要传递的数据放入Message对象...

  • Messenger轻量级IPC方案

    概述 什么是messenger Messenger可以翻译为信使,通过它可以在不同的进程中传递Messenger对...

  • Messenger实现进程间通信

    为什么Messenger能进行进程间通信 Messenger翻译为信使,他可以在不同的进程中传递Message对象...

  • Android Messenger进程间通信

    Messenger可以在不同进程中传递Message对象,我们在Message中加入我们想要传的数据就可以在进程间...

  • IPC之Messenger

    参考Android开发艺术探索 Messenger Messenger:信使,通过它可以不同进程中传递Messag...

  • Android IPC之Messenger

    Messenger 翻译为信使,通过Messenger可以实现在不同进程间传递Message对象。Messenge...

  • ipc 使用Messenger进行跨进程通信

    Messenger Messenger翻译为信使,即它可以在不同进程中传递Message对象。在Message中放...

  • Messenger 信使

    概述 通过Messenger 我们可以在不同的进程中传递 Message 对象,在Message中放入我们需要传递...

  • Android IPC机制:Messenger

    Messenger可以被翻译为信使,通过它可以在不同进程中传递Message对象。在message中放入需要传递的...

网友评论

      本文标题:Messenger跨进程传递数据

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