hander消息机制原理
2015-08-09 10:24
183 查看
基本原理
线程中调用Handler.sendMsg()方法(参数是Message对象),将需要Main线程处理的事件 添加到Main线程的MessageQueue中,Main线程通过MainLooper从消息队列中取出Handler发过来的这个消息时,会回调 Handler的handlerMessage()方法。
注意:(UI主要线程中才有Looper)
创建一个Handler时一定要关联一个Looper实例,默认构造方法Handler(),它是关联当前Thread的Looper
在创建一个Handler的时候也可以指定Looper,此时的Looper对象,可以是当前线程的也可以是其它线程的!
多线程中使用,容易造成内存泄漏;也可以用RunOnuiThread()来替代。
ps:MessageQueue是消息队列,先进先出,它的作用是保存有待线程处理的消息。
Handler只是处理它所关联的Looper中的MessageQueue中的Message,至于它哪个线程的Looper,Handler并不是很关心!
线程中调用Handler.sendMsg()方法(参数是Message对象),将需要Main线程处理的事件 添加到Main线程的MessageQueue中,Main线程通过MainLooper从消息队列中取出Handler发过来的这个消息时,会回调 Handler的handlerMessage()方法。
注意:(UI主要线程中才有Looper)
创建一个Handler时一定要关联一个Looper实例,默认构造方法Handler(),它是关联当前Thread的Looper
在创建一个Handler的时候也可以指定Looper,此时的Looper对象,可以是当前线程的也可以是其它线程的!
多线程中使用,容易造成内存泄漏;也可以用RunOnuiThread()来替代。
ps:MessageQueue是消息队列,先进先出,它的作用是保存有待线程处理的消息。
Handler只是处理它所关联的Looper中的MessageQueue中的Message,至于它哪个线程的Looper,Handler并不是很关心!
相关文章推荐
- 按下按钮圆圈可以改变颜色
- hdu 5365 /BC 50B Run
- bzoj-3203 保护出题人
- 更多RANK37
- JAVA环境变量配置
- china-pub
- http——访问图片资源
- Java中wait,notify方法
- 【日常学习】【背包DP(完全背包)】洛谷1616 疯狂的采药题解
- linux自定义脚本添加到rc.local脚本无法正常运行的问题
- china-pub
- 生活记录(1)
- 内存泄露
- POJ 3050 Hopscotch (穷竭搜索)
- VM克隆虚拟机不能上网的一些小问题。
- POJ - 3667 Hotel (线段树 + 区间合并)
- 学点平面知识丨快速去除水印
- java i/o操作
- HDU 2759 Billboard 线段树
- Hadop使用Partitioner后,结果还是一个文件,如何解决??