文档章节

Handler Loop Message 相关

d
 dairibery
发布于 2016/11/02 16:06
字数 247
阅读 8
收藏 0

Handler作用为发送消息和处理消息。

Handler要正常工作,必须在当前线程中存在一个MessageQueue,用于管理Handler发送的Message。

MessageQueue有Looper管理,所以必须在当前线程存在Looper对象。

 

Looper:每个线程只有一个Looper,负责管理MessageQueue,会不断地从MessageQueue中取出消息,并将消息分给对应的Handler处理。

MessageQueue:由Looper管理,采用先进先出的方式管理Message。

Handler:把Message发送给Looper管理的MessageQueue,并负责处理Looper分给它的Message。

 

主UI线程中,系统默认初始化了一个Looper对象,所以可以直接创建Handler对象,通过Handler对象发送处理消息。

子线程中, 必须手动创建一个Looper对象

  1. 调用Looper的 prepare() 方法,创建Looper对象,Looper的构造器会创建MessageQueue
  2. 创建Looper对象后,创建Handler子类的示例,重写handleMessage() 方法
  3. 调用Looper的 loop() 方法启动Looper

 

© 著作权归作者所有

上一篇: 隐藏ActionBar
下一篇: Android网络相关
d
粉丝 0
博文 11
码字总数 3486
作品 0
南京
程序员
私信 提问
Android中的消息队列与消息循环:认识Handler、Looper

学习android到今天也将近3个月了,虽然各种界面各种组件一直在欢快的用着,但有一天忽然发现,一些简单的东西去不是很理解:比如Bundle和Handler。于是就抽空好好阅读了下adk文档。现在也算是...

古沐风
2014/02/23
2.5K
0
基于loudmouth的XMPP客户端DEMO

这几天在公司一直在研究XMPP客户端软件DEMO的编写,下面的源代码是基于开源库loudmouth-1.4.3的XMPP客户端源代码。这段代码只是一个Demo,使用一个已经在服务器上注册了的用户登录到XMPP服务...

linuxhunter
2011/11/17
1K
0
android开发-----message

MessageQueue:消息队列,使用FIFO规则执行,每一个线程只可以拥有一个MessageQueue,在创建Looper对象会创建一个 MessageQueue用来容纳Message队列的,其中的Message是由Looper来分发的,Mes...

DURONG
2012/05/06
293
0
我来讲一下学习android里面的handler的心得

讲handler涉及到四个对象message,messagequene,looper,handler 1.message就是其字面意思消息,比较主要的属性有两类,一类是作为简单数据存储(arg1,arg2,obj,what(标识以区分不同消息)...

Evo
2011/07/12
523
3
终于明白了Handler的运行机制

前言 Handler是一个Android SDK 提供给开发者方便进行异步消息处理的类。 我们都知道在UI线程中不能进行耗时操作,例如数据读写、网络请求。Android 4.0开始,在主线程中进行网络请求甚至会抛...

IAM四十二
2017/01/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部