文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
今天
2
0
OSChina 周五乱弹 —— 想不想把92年的萝莉退货

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @罗马的王:分享松澤由美的单曲《地球ぎ》 很久没看圣斗士星矢了 《地球ぎ》- 松澤由美 手机党少年们想听歌,请使劲儿戳(这里) @开源中国首...

小小编辑
今天
14
1
springBoot条件配置

本篇介绍下,如何通过springboot的条件配置,控制Bean的创建 介绍下开发环境 JDK版本1.8 springboot版本是1.5.2 开发工具为 intellij idea(2018.2) 开发环境为 15款MacBook Pro 前言 很多时候,...

贺小五
今天
1
0
javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
1
0
谈谈如何学Linux和它在如今社会的影响

昨天,还在农耕脑力社会,今天已经人工智能技术、大数据、信息技术的科技社会了,高速开展并迅速浸透到当今科技社会的各个方面,Linux日益成为人们信息时代的到来,更加考验我们对信息的处理程...

linux-tao
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部