深入Android架构(从线程到AIDL)_25 Messager框架与IMessager接口01

1、 Messenger的概念和角色

同一进程
  • myActivity和myService两者执行于同一的进程里(IPC)
  • myActivity的线程想丢信息(Message)给myService的主线程
  • 多条并行(Concurrently)的小线程丢信息到myService主线程的MQ,
  • 变成同步(Synchronized)的调用myService的handleMessage()函数。
不同进程
  • myActivity和myService两者执行于不同的进程里(IPC)
  • myActivity的线程想丢信息(Message)给myService的主线程

       

         

      

  • Messenger类来扩充IBinder接口机制,让其能跨进程地将Message对象传递到另一个进程里,给其主线程(又称UI线程)。
  • 由于Message类实作(Implement)了Parcelable接口,所以Messenger类可以透过IBinder接口而将Message对象传送到另一个进程里的MessengerImpl类。
  • 然后,透过Handler而将Message对象丢入UI线程的MQ里,让UI线程来处理之。
  • 由于是同步(依序)处理信息,所以myService 类的开发者,不必顾虑多线程冲突的安全议题,减轻开发者的负担。
目的与方法
  • 目的: myActivity方的多个线程想丢信息给远程的myService的线程
  • 方法: 使用Messager类包装IBinder接口,将信息丢入myService主线程的MQ里。然后,由myService主线程同步(依序)处理这些信息
  • 在学习Android的AIDL时,通常会从Android 说明文件里看到如下的说明:

        

                

  • 这短短的几句话,让一些初学者满头雾水,因为其中牵涉到多线程(multithreading)和IPC跨进程的环境。其中, Android文件又说明道:

        

  • 这适用于跨进程的IPC沟通,可让双方透过Messenger来传递Message对象。
  • 同一进程由于是同步(依序)处理信息,所以myService 类的开发者,不必顾虑多线程冲突的安全议题,减轻开发者的负担。
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思忖小下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值