Android系统学习总结3--Looper和Handler分析
程序员文章站
2022-07-14 17:07:36
...
事件源把待处理的消息加入到消息队列中,一般是加至队列尾部,一些优先级高的消息也可以加至队列头。事件源可以是按键、触摸屏等物理事件产生的消息,也可以是系统或应用本身发出的请求消息
处理线程不断从消息队列头中取出消息并处理,事件源可以把优先级高的消息放到队列头,这样优先级高的消息就会首先被处理。
Looper类,用于封装消息循环,并且有一个消息队列
Handler类,有点像辅助类,它封装了消息投递,消息处理等接口。
我们以Looper使用的一个常见例子来分析Looper
class LooperThread extends Thread {
public Handler mHandler;
public void run() {
//调用perpare
Looper.prepare();
......
//进入消息循环
Looper.loop();
}
}
//应用程序使用LooperThread
{
new LooperThread().start();//启动新线程,线程函数就是run
}
在prepare中,构建一个Looper对象,Looper构造创建一个消息队列,获取当前线程的对象,这样Looper就和调用线程绑定了
Loop函数处理来自该消息队列的消息。
Looper、Message和Handler的关系
Looper中有一个Message队列,里面存储的是一个个待处理的Message
Message中有一个Handler,这个Handler是用来处理Message的
查看Handler的源码,知道Handler的构造函数中有Looper对象,Message对象,还有个回调接口
关于Handler和Looper的实例现在遇到的很少,遇到后在深入学习
转载于:https://my.oschina.net/snail0/blog/322611