Android中的Looper,Handler,Message和MessageQueue

来源:互联网 发布:开源流程引擎 java 编辑:程序博客网 时间:2024/05/24 01:49
Looper,它拥有MessageQueue,可以跟线程绑定(在prepare时绑定当前线程),对消息进行处理(loop)。
其主要方法:prepare(), loop(){msg.target.dispatchMessage(msg);}, quit()等。
Handler,它拥有Looper及其MessageQueue,可以获取消息,投递或发送消息,分发或处理消息等。
其主要方法:obtainMessage(), post()/sendMessage(), dispatchMessage()/handleMessage()等。
Message,它拥有类型int,参数int,数据Bundle,目标Handler等属性,可产生新消息用于投递和处理。
其主要方法:obtain(), sendToTarget()等。
MessageQueue,消息队列,由native实现。


Handler并不等于Thread,必须通过Thread的Looper及其MessageQueue,用来实现Thread消息系统模型,依附于Thread上。
Handler唯一属于某个Thread,建立Handler时,需要获取Thread的Looper及其MessageQueue,Looper的来源是关键。
1 0
原创粉丝点击