HandlerThread、Loop、MessageQueue、Handler、Message组成的Android的消息处理机制
2013-07-20 16:48
471 查看
这种消息处理机制主要用在不需要在消息处理中处理UI相关的操作,不会影响UI线程的流畅度.
1.HandlerThread:对消息进行处理的线程。
public class HandlerThread extends Thread { private int mPriority; private int mTid = -1; private Looper mLooper;
2.Message:消息对象。
3.MessageQueue:负责对Message进行管理,是一个先进先出的管理方式.
4.Handler:负责发送Message以及处理Message,用默认的构造器创建的对象会绑定UI线程的Loop对象,用Handler(Loop lp)构造器创建的对象会绑定lp对象。
5.Loop: 负责创建一个MessageQueue对象,以及对它进行管理,负责把Handler对象(与该Loop对象绑定的Handler)发来的Message对象存放到MessageQueue对象中,
和把MessageQueue对象中的Message对象发送到Handler对象(与该Loop对象绑定的Handler)进行处理。
注:每个线程只有一个Loop,只要Handler绑定了Loop对象,那么Handler也就绑定了拥有该Loop对象的线程,
Loop对象可以通过HandlerThread对象的getLooper()方法获得。
注:Loop的部分源码
public class Looper { final MessageQueue mQueue; volatile boolean mRun; Thread mThread;
在非UI线程中处理消息的例子:
/** * 在非UI线程里对消息进行处理 * @author wuzm * */ public class Test { private class ThreadHandler extends Handler{ public ThreadHandler(Looper looper){ super(looper); } @Override public void handleMessage(Message msg) { if(msg.what == 1){ /*这里对消息进行处理*/ } super.handleMessage(msg); } } public Test(){ HandlerThread handlerThread = new HandlerThread("TestHandlerThread"); Looper looper = handlerThread.getLooper(); ThreadHandler handler = new ThreadHandler(looper); Message msg = new Message(); msg.what = 1; handler.sendMessage(msg); } }
在UI线程中对消息进行处理的例子:
/** * 在UI线程里对消息进行处理 * @author wuzm * */ public class Test { private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { if(msg.what == 1){ /*对消息进行处理*/ } super.handleMessage(msg); } }; public Test(){ Message msg = new Message(); msg.what = 1; handler.sendMessage(msg); } }
相关文章推荐
- Android线程之异步消息处理机制(二)——Message、Handler、MessageQueue和Looper
- Android消息处理机制(Handler、Looper、MessageQueue与Message)
- Android消息处理机制(Handler、Looper、MessageQueue与Message)
- Android多线程消息处理机制(四) Message、MessageQueue源码解析和Handler综合使用
- Android 消息处理机制(Looper、Handler、MessageQueue,Message)
- Android消息处理机制(Handler、Looper、MessageQueue与Message)
- Android消息处理机制——Looper,Handler,Message,MessageQueue,Thread
- Android消息处理机制(Handler、Looper、MessageQueue与Message)
- Android消息处理机制——Looper,Handler,Message,MessageQueue
- Android 消息处理机制(Looper、Handler、MessageQueue,Message)
- 【Android】【异步消息处理机制】Message,MessageQueue,Looper,Handler
- Android异步消息处理机制,深入理解Handler(MessageQueue、Message、Looper)
- Android消息处理机制(Handler、Looper、MessageQueue与Message)
- Android消息处理机制(Handler、Looper、MessageQueue与Message)
- android消息处理机制学习(二)-Handler,Message,MessageQueue,Looper图例讲解
- Android消息处理惩罚机制(Handler、Looper、MessageQueue与Message)
- Android 消息处理机制(Looper、Handler、MessageQueue,Message)
- Android消息处理机制(Handler、Looper、MessageQueue与Message)
- Android消息处理机制(Handler、Looper、MessageQueue与Message)
- Android消息处理机制(Handler、Looper、MessageQueue与Message)