梳理android异步通信的概念

IBinder 通信机制是一个轻量级的远程过程调用机制,用于进程内和进程间的高性能的通信。

Android进程间通信(IPC)机制Binder简要介绍和学习计划
http://blog.youkuaiyun.com/luoshengyang/article/details/6618363/

Android Bundle类

Bundle主要用于传递数据;它保存的数据,是以key-value(键值对)的形式存在的。我们经常使用Bundle在Activity之间传递数据,传递的数据可以是boolean、byte、int、long、float、double、string等基本类型或它们对应的数组,也可以是对象或对象数组。当Bundle传递的是对象或对象数组时,必须实现Serializable
或Parcelable接口。下面分别介绍Activity之间如何传递基本类型、传递对象。

此处转载别处:
Android Binder机制

binder通信是一种client-server的通信结构,
1.从表面上来看,是client通过获得一个server的代理接口,对server进行直接调用;
2.实际上,代理接口中定义的方法与server中定义的方法是一一对应的;
3.client调用某个代理接口中的方法时,代理接口的方法会将client传递的参数打包成为Parcel对象;
4.代理接口将该Parcel发送给内核中的binder driver.
5.server会读取binder driver中的请求数据,如果是发送给自己的,解包Parcel对象,处理并将结果返回;
6.整个的调用过程是一个同步过程,在server处理的时候,client会block住。

Messager:允许实现基于消息的进程间通信的方式。
Messager实现IPC通信,底层也是使用了AIDL方式。和AIDL方式不同的是,Messager方式是利用Handler形式处理,因此,它是线程安全的,这也表示它不支持并发处理;而AIDL方式是非线程安全的,支持并发处理,因此,我们使用AIDL方式时需要保证代码的线程安全。
Messenger:信使,其指向一个Handler,他人可以使用信使向Handler发送消息。信使实现了基于消息队列的跨进程的通讯,在一个进程中创建一个指向Handler的信使,然后把信使返回给其他的进程,使得其它的进程可以向这个进程发送消息。
Message:消息,其中包含了消息ID,消息处理对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理。
public static Message obtain(Handler h, int what, int arg1, int arg2, Object obj)
与obtain()方法相同,但是要设置target、what、arg1、arg2、和obj成员变量的值。
参数说明:
h:处理消息的目标Handler对象;
what:消息的编码;
arg1:附加的整数数据;
arg2:附加的整数数据;
obj:附件的Object类型数据。
返回值:从全局的对象池中返回一个Message对象。

public static Message obtain(Message orig) 与obtain()方法相同,但它是把一个既存的Message对象(包括它的目标)复制到一个新的Message对象中。 参数说明:

orig:要复制的原始消息
返回值:从全局的对象池中返回一个Message对象。
public Messenger replyto:设定能够接收此消息的回复的Messager对象。确切的语义应该使用发送者和接受者。

Handler:处理者,负责Message的发送及处理。使用Handler时,需要实现handleMessage (Message msg) 方法来对特定的Message进行处理,例如更新UI等。
主要作用:在新启动的线程中发送消息;在主线程中获取、处理消息。
Android异步消息处理机制详解及源码分析 http://blog.youkuaiyun.com/yanbober/article/details/45936145

MessageQueue:消息队列,用来存放Handler发送过来的消息,并按照FIFO规则执行。当然,存放Message并非实际意义的保存,而是将Message以链表的方式串联起来的,等待Looper的抽取。

Looper:消息泵,不断地从MessageQueue中抽取Message执行。因此,一个MessageQueue需要一个Looper。

Thread:线程,负责调度整个消息循环,即消息循环的执行场所。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值