Android Handler到底是什么?
来源:互联网 发布:淘宝客服的上班时间 编辑:程序博客网 时间:2024/06/05 17:47
Android Handler到底是什么?
其实这个问题在一开始接触到Android的时候就遇到了,当初是Mars老师讲的Handler的用法,但是只是知道了这个东西的粗略用法。至于如何正确使用却是一知半解。
在后来实际的开发过程中逐渐发现了Handler的一些用法。我认为如果像将这个工具利用好,还是得看清楚这个东西的本质。尤其是不把Handler\Looper\Message这三者之间的关系理顺,基本上是在盲人摸象。
本文参考了鸿洋老师的博文Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
另外一个参考资料是来自邓平凡所写的《深入理解Android:卷一》(第五章第四节)。
靠消息驱动的Android应用
和其他系统相同,Android应用程序也是依靠消息驱动来工作的。
其工作原理如下:
- 有一个消息队列,可以往这个消息队列中投递消息。
- 有一个消息循环,不断从消息队列中取出消息,然后处理。
在Android中,这样的工作主要是由Looper以及Handler来实现的
- Looper : 封装了消息循环,拥有一个消息队列。
- Handler: 有点类似辅助类,封装了消息投递、消息处理等接口。
我们先重点关注一下Looper类:
建立一个简单的Thread类
public class LooperThread extends Thread{ @Override public void run() { super.run(); Looper.prepare(); Looper.loop(); }}
关于Looper.prepare()方法,将建立一个和当前线程绑定的Looper对象。
和线程绑定是如何实现的?
这和一个类ThreadLocal相关。
之后调用Looper.loop()
方法开始消息循环。
0 0
- Android Handler到底是什么?
- Android Context 到底是什么?
- Android Context 到底是什么?
- android中URI到底是什么?
- android中URI到底是什么?
- application/vnd.android.package-archive到底是什么
- Android主线程到底是什么(一)
- Android主线程到底是什么(二)
- Android学习笔记--Context到底是什么?
- Activity到底是什么(新手学Android)
- 到底是什么
- 解析 Android ART 到底是什么?(附:实测数据)
- Android mvvm mvc mvp到底是什么?简述mvvm mvc mvp
- Android:JNI 与 NDK到底是什么?(含实例教学)
- Android:JNI 与 NDK到底是什么?(含实例教学)
- Android:JNI 与 NDK到底是什么?(含实例教学)
- Android:JNI 与 NDK到底是什么?(含实例教学)
- Android中Handler的post方法的作用是什么
- 设计模式六大原则(2):里氏替换原则
- 多个TextView 跑马灯效果
- POJ 3040Allowance【难,贪心】
- jqgrid基础知识了解
- Spring MVC 的初步应用
- Android Handler到底是什么?
- POJ 2528 Mayor's posters ( 线段树 : 区间修改 + 离散化 )
- Python学习(Leetcode 算法题解【21~40】)
- java中super关键字的理解(自己测试得出的结论)
- 【HDU】-2035-人见人爱A^B(快速幂)
- centos sonar Unable to start JVM: No such file or directory
- 【HDU】2824 - GCD(欧拉函数打表)
- Key Set(快速幂)
- Swift基础(十五)UIButton