Andriod中Handler,Looper,MessageQueue的关系
来源:互联网 发布:mysql 5.1.32.tar.gz 编辑:程序博客网 时间:2024/05/21 07:54
把所有主要的逻辑通过关键代码展示出来:
通常,我们的代码:
Handler mHandler = new Handler(){......}
Handler:
public Handler() { ...... mLooper = Looper.myLooper(); if (mLooper == null) { throw new RuntimeException( "Can't create handler inside thread that has not called Looper.prepare()"); } mQueue = mLooper.mQueue;
Looper:
public static final void prepare() { if (sThreadLocal.get() != null) { throw new RuntimeException("Only one Looper may be created per thread"); } sThreadLocal.set(new Looper()); }
private Looper() { mQueue = new MessageQueue(); mRun = true; mThread = Thread.currentThread(); }
public static final void loop() { Looper me = myLooper(); MessageQueue queue = me.mQueue; while (true) { Message msg = queue.next(); // might block if (msg != null) { if (msg.target == null) { // No target is a magic identifier for the quit message. return; }...... msg.target.dispatchMessage(msg);//target即是handler
MessageQueue:
final Message next() { boolean tryIdle = true; while (true) { ...... // Try to retrieve the next message, returning if found. synchronized (this) { now = SystemClock.uptimeMillis(); Message msg = pullNextLocked(now);
final Message pullNextLocked(long now) { Message msg = mMessages; if (msg != null) { if (now >= msg.when) { mMessages = msg.next;
Message相当于一个单链表的形式,msg.next来访问下一个节点
- Andriod中Handler,Looper,MessageQueue的关系
- Handler、MessageQueue 、Looper的关系
- Handler Looper MessageQueue 的关系
- android中MessageQueue,Message,Looper,handler的关系
- android中MessageQueue,Message,Looper,handler的关系
- android中message、messageQueue、Handler、looper的关系
- Handler,Looper,MessageQueue关系
- Activity/MessageQueue/Handler/Looper之间的关系
- Looper, messageQueue和Handler的关系
- Handler Looper Message MessageQueue 的关系
- Message、Handler、MessageQueue、Looper之间的关系
- handler、looper、messagequeue之间的关系
- Handler与looper、MessageQueue的关系
- Handler Looper MessageQueue 之间的关系
- Android--Handler,Looper,MessageQueue的关系
- Message,Handler,MessageQueue,Looper之间的关系
- 理解Handler、Looper、MessageQueue的关系
- Handler,Looper,Message,MessageQueue的关系
- Difference between Externalizable and Serializable in Java
- Decimal与double类型误差
- 两个正在运行的activity之间的通信
- sp彩信错误状态码
- cygwin 支持IPC http://hi.baidu.com/wangzhiqing999/blog/item/3cfe34c6587abe060ef47794.html
- Andriod中Handler,Looper,MessageQueue的关系
- django 中式用静态文件(css,javascript)
- Linux SVN 命令详解
- LoadRunner使用手册
- Linux下ORACLE误删除数据文件恢复操作
- nftl算法分析
- 在ubuntu9.10下实现开机自动登录
- 让非root用户能使用wireshark捕捉网络数据包
- 12-1-30进步一小点