文档章节

Android系统学习总结3--Looper和Handler分析

jince
 jince
发布于 2014/09/27 14:24
字数 491
阅读 34
收藏 0

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

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

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

 

© 著作权归作者所有

共有 人打赏支持
jince
粉丝 3
博文 18
码字总数 9622
作品 0
深圳
程序员
私信 提问
深入理解Android消息处理系统——Looper、Handler、Thread

熟悉Windows编程的朋友可能知道Windows程序是消息驱动的,并且有全局的消息循环系统。而Android应用程序也是消息驱动的,按道理来说也应该提供消息循环机制。实际上谷歌参考了Windows的消息循...

惊天
2011/07/26
0
0
android的消息处理机制(图+源码分析)——Looper,Handler,Message

作为一个大三的预备程序员,我学习android的一大乐趣是可以通过源码学习google大牛们的设计思想。android源码中包含了大量的设计模式,除此以外,android sdk还精心为我们设计了各种helper类...

火蚁
2014/05/14
0
0
Android的消息处理机制(图+源码分析)——Looper,Handler,Message

作为一个大三的预备程序员,我学习android的一大乐趣是可以通过源码学习google大牛们的设计思想。android源码中包含了大量的设 计模式,除此以外,android sdk还精心为我们设计了各种helper类...

Jerikc
2013/12/28
0
0
Handler+Looper+MessageQueue深入详解

在《Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面》中,我们讲到使用Thread+Handler的方式来实现界面的更新,其实是在非UI线程发送消息到UI线程,通知UI线程进行界面更新,...

鉴客
2011/09/17
18.5K
9
拨云见日---android异步消息机制源码分析(一)

做过windows GUI的同学应该清楚,一般的GUI操作都是基于消息机制的,应用程序维护一个消息队列,开发人员编写对应事件的回调函数就能实现我们想要的操作 其实android系统也和windows GUI一样...

JohnnyR
2015/02/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

安卓constraintLayout中app:srcCompat设置的图片显示不出来

使用 app:srcCompat 的时候 引入的图片显示不出来的解决方案 首先查看的你的Activity 继承的是那个Activity 如果是继承AppcompatActivity 使用 ImageView的 app:srcCompat 是没有问题的 如果...

雨焰
41分钟前
1
0
MySQL mysqldump数据导出详解

MySQL mysqldump数据导出详解 2016-04-07 11:14 by pursuer.chen, 114348 阅读, 0 评论, 收藏, 编辑 介绍 在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用...

linjin200
41分钟前
0
0
Lucene 检索时的步骤

用户输入查询语句:lucene AND learned NOT hadoop 搜索主要分为以下几步 第一步、对查询语句进行词法分析,语法分析,及语言处理 词法分析主要用来识别单词和关键字 语法分析主要是根据查询...

kdy1994
42分钟前
2
0
Gradle Implementation vs API configuration

注: 可以把 Implementation理解为java类的private, 使用Implementation则外部依赖本库的代码引用不到本库Implementation的代码, 也就是降低依赖树的层级, 这样就可以避免外部代码编译时候, 导...

SuShine
46分钟前
2
0
pdf安卓手机适配以及ie的兼容 以及隐藏掉下载打印按钮的方式

这是我目前遇到pdf方面最多的问题。 在百度上搜了很多答案,结果都是建议使用插件。而目前百度能搜的插件基本上都是有缺陷的。自己测试了很多插件。最后使用了pdf.js这个插件。这个插件目前完...

流年那么伤
52分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部