Android系统学习总结3--Looper和Handler分析
博客专区 > jince 的博客 > 博客详情
Android系统学习总结3--Looper和Handler分析
jince 发表于4年前
Android系统学习总结3--Looper和Handler分析
  • 发表于 4年前
  • 阅读 33
  • 收藏 0
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

摘要: Android系统中java的应用程序和其他系统上相同,都是靠消息驱动来工作的,他们大致的工作原理如下: 有一个消息队列,可以往这个消息队列中投递消息 有一个消息循环,不断的从消息队列中取出消息,然后处理

事件源把待处理的消息加入到消息队列中,一般是加至队列尾部,一些优先级高的消息也可以加至队列头。事件源可以是按键、触摸屏等物理事件产生的消息,也可以是系统或应用本身发出的请求消息

处理线程不断从消息队列头中取出消息并处理,事件源可以把优先级高的消息放到队列头,这样优先级高的消息就会首先被处理。

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的实例现在遇到的很少,遇到后在深入学习

 

标签: Android
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 2
博文 17
码字总数 9622
×
jince
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: