欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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