线程中Handler和Looper的理解
来源:互联网 发布:奶油知多少 编辑:程序博客网 时间:2024/05/25 05:37
网上没有什么比较好的例子,往往给出的都是这样的代码
LooperThread Thread { Handler mHandler; run() { Looper.prepare(); mHandler = Handler() { handleMessage(Message msg) { } }; Looper.loop(); } }
就这么看的话,确实不是很理解,网上的解释是给出源码一条一条解释给你看。可是要真正理解还是要自己去看一看源码,然后自己写个demo试试。
通过代码可以知道,Looper作为一个消息泵,在主线程中已经默认设置好了。如果在其他线程也想实行类似的消息处理机制,就要像上面的例子一样继承Thread重写,同时,一个线程只能有一个Looper,对应一个MessageQueue。
而只所以其中可以进行循环不断地消息处理,是因为在Looper.loop()里,实行了一个for( ; ; )的无限循环,而在这个循环里的判断,通过看源码得知,Looper中自己维护的MessageQueue中的next()方法中也有一个for( ; ; )循环,在其中,只要不收到quit的消息,就不会跳出循环给出返回值,这样loop()就会一直在等到有消息进来。所以在退出该线程时需要调用到Looper的quit()方法。
这里的looper的quit也有区别,分别是quit()和quitSafely()方法,区别就是前者直接退出,清空queue中的所有信息,后者会将还在MessageQueue中的非延迟信息处理了,然后清空所有延迟信息(delayed),然后再退出。
0 0
- 线程中Handler和Looper的理解
- 线程 (Handler、Looper、MessageQueue和Thread的理解)
- handler looper 和 线程
- Android中Looper, Handler, MessageQueue的理解
- android handler 和Looper 的理解
- Android中线程和handler的理解
- 一个关于looper和handler的好玩例子(子线程中使用handler)
- Handler、Looper、Message的理解
- Android中UI线程Looper,Handler的关系
- 子线程中Looper与Handler的使用
- Android 中 Looper、Handler、Toast的交互理解
- handler和looper在子线程的调用
- Handler 和 Looper 来满足线程间的通信
- Looper,Handler,Message Queue和线程之间的那些事
- Message MessageQueue Runnable Looper 和Handler的关系理解
- android开发 handler和looper 线程通信
- handler中Looper的用法
- 深入理解Message, MessageQueue, Handler和Looper
- linux一些不常用单很有用的命令
- 安卓开发 先检测WIFI是否打开,如果打开,则检测是否连接成功,如果关闭,则打开后检测是否连接成功。
- Java分割字符串
- iOS隐藏UITableView下面多余的线条
- ios - 图片处理
- 线程中Handler和Looper的理解
- 50个实用的jquery案例
- Android动画合集之属性动画-初见
- 【Developer Log】ProGuard扰码web项目(WAR)
- 蒙太奇式的产品设计--老吴说产品
- android测试工具MonkeyRunner--google官网翻译
- Sicily 1321(Dijkstra算法)
- 为本地项目建立版本管理
- python爬虫获取郑大教务在线成绩数据