文档章节

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
粉丝 2
博文 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
深入解读Linux与Android的相互关系& Android消息处理系统的原理

深入解读Linux与Android的相互关系 大家都知道Android是基于Linux内核的操作系统,也曾经和Linux基金会因为内核问题产生过分歧,本文将开始对Android的内核进行剖析,主要介绍Android和Linux...

AlphaJay
2011/07/29
0
0
拨云见日---android异步消息机制源码分析(一)

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

JohnnyR
2015/02/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

(一)软件测试专题——之Linux常用命令篇01

本文永久更新地址:https://my.oschina.net/bysu/blog/1931063 【若要到岸,请摇船:开源中国 不最醉不龟归】 Linux的历史之类的很多书籍都习惯把它的今生来世,祖宗十八代都扒出来,美其名曰...

不最醉不龟归
23分钟前
6
0
蚂蚁金服Java开发三面

8月20号晚上8点进行了蚂蚁金服Java开发岗的第三面,下面开始: 自我介绍(要求从实践过程以及技术背景角度着重介绍) 实习经历,说说你在公司实习所做的事情,学到了什么 关于你们的交易平台...

edwardGe
30分钟前
7
0
TypeScript基础入门 - 函数 - this(三)

转载 TypeScript基础入门 - 函数 - this(三) 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.4 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
40分钟前
0
0
Spark core基础

Spark RDD的五大特性 RDD是由一系列的Partition组成的,如果Spark计算的数据是在HDFS上那么partition个数是与block数一致(大多数情况) RDD是有一系列的依赖关系,有利于Spark计算的容错 RDD中每...

张泽立
47分钟前
0
0
如何搭建Keepalived+Nginx+Tomcat高可用负载均衡架构

一.概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已...

Java大蜗牛
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部