Messager与AIDL的区别

1.Messenger的本质也是AIDL,只不过Messenger对其进行了封装,在操作的时候不用再写.aidl文件。
因为在使用Messenger的时候不用写aidl文件,所以使用Messenger是非常简单方便的,但是因为Messenger是对AIDL的封装,所以在底层进程通信上,两者的效率应该是差不多的。
2.在service端,Messenger处理client的请求是单线程的,AIDL是多线程的。
AIDL当service端收到一个请求时,就会启动一个线程,不是主线程,对其进行处理,而Messenger是将其放入handle的MessageQueue中进行处理,handle需要绑定一个thread。
3.在client端,使用AIDL获取返回值是同步的,使用Messager是异步的。
Messenger提供了一种方法进行进程间通信,就是send(Message msg)方法,没有返回值,如果需要返回值,需要将client的Messenger作为msg.replyTo参数传递过去,service处理完后,在调用的cilent的send方法将返回值返回client,这个过程是异步的。AIDL可以指定方法,指定返回值,这个过程是同步的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 首先要明白消息通信一般包括两种,一种是简单的数据访问,如ContentProvider,使用文件或云端方式共享,一...
    悠悠我心_4a00阅读 1,985评论 0 1
  • 什么是 RPC 框架:- 很简单,就是用来实现远程调用,进程间通信的,不同的系统由不同的实现,android 这里...
    前行的乌龟阅读 1,206评论 0 4
  • AIDL是 Android Interface definition language的缩写,一看就明白,它是一种...
    一只好奇的茂阅读 1,244评论 0 16
  • 在 Android 世界里,默认的每个 APP 是一个单独的进程。其实这样的描述是不严格的,因为咱们要研究 And...
    o动感超人o阅读 4,900评论 0 51
  • 今天的练习作业共三个: 1、禅绕画五元素 2、图样练习 3、今天的收获,自己有什么心得体会,今天的练习对自己触动?...
    冰清2016阅读 332评论 0 0