Handler的解析和使用
1.handler为android中多线程间通信的一种机制,
@1android中只允许在UI线程(主线程)操作或改变UI,其他线程不能操作UI。
@2其他线程有刷新UI的需要,所以得告诉UI线程,这时候就用到Handler,在handeMessage方法中处理消息。
@3handler可以定义在主线程也可以定义在其他线程,作用不一样。
@4与handler执行相关的类:Handler,Message,MessageQueue,Looper
UI线程:主线程,创建时会自动初始化一个Looper对象,也会创建一个消息队列
Message:消息,其中包含了消息ID,消息处理对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理。
Handler:处理者,负责Message的发送及处理。使用Handler时,需要实现handleMessage(Message msg)方法来对特定的Message进行处理,例如更新UI等。
MessageQueue:消息队列,用来存放Handler发送过来的消息,并按照FIFO规则执行。当然,存放Message并非实际意义的保存,而是将Message以链表的方式串联起来的,等待Looper的抽取。
Looper:消息泵,不断地从MessageQueue中抽取Message执行。因此,一个MessageQueue需要一个Looper。
Thread:线程,负责调度整个消息循环,即消息循环的执行场所。
2.handler的使用
@1用在主线程
---1-定义Handler对象,重写handleMessage方法,在方法里面处理消息,更新UI
private Handler mHanlder = new Handler(){ public void handleMessage(android.os.Message msg) { numberAdapter = new BlackNumberAdapter(getApplicationContext(), mList, mBnd);
lv_blacknum.setAdapter(numberAdapter); }; };
---2-在其他 线程发送消息,有时需要自己定义消息对象
mHanlder.sendEmptyMessage(BLACKNUM_PREPARED);
@2handler定义在子线程,需要自己创建Looper对象
----流程:
====1.调用Looper.prepare()为当前线程创建Looper对象,此时会自动创建MessageQueue消息队列;2.创建Handler对象,重写handleMessage方法;3.调用Looper.loop()方法启动Looper消息循环
Handler的解析和使用的更多相关文章
- Handler Looper 解析
文章讲述Looper/MessageQueue/Handler/HandlerThread相关的技能和使用方法. 什么是Looper?Looper有什么作用? Looper是用于给线程(Thread) ...
- Handler源代码解析-有关Handler那些事
Handler被成为异步处理大师.相信大家都会用,面试中也常常会问到Handler的底层原理.今天就来看一看Handler的机制. Android的消息处理有四个核心类:Handler.Looper. ...
- MySQL Handler变量解析
http://blog.itpub.net/29254281/viewspace-1159014/ To see the effect of a query do the following st ...
- Android Handler面试解析
- Android入门(二十一)解析XML
原文链接:http://www.orlion.ga/685/ 解析XML常用的方式有两种,一种是PULL解析一种是SAX解析. 假设解析数据为: <apps> <app> ...
- Android 简易XML解析
首先创建在Android工程中创建一个Assets文件夹 app/src/main/assets 在这里添加一个名为 data.xml的文件,然后编辑这个文件,加入如下XML格式内容 <?xml ...
- Android系列--DOM、SAX、Pull解析XML
您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...
- Android中解析XML
XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能.今天就由我向大家介绍一下在Android平台下几种常见的XML解 ...
- Android中XML解析
package com.example.thebroadproject; public class Book { private int id; private String name; privat ...
随机推荐
- ASP.NET Core教程【二】从保存数据看特有属性与服务端验证
前文索引: 在layout.cshtml文件中,我们可以看到如下代码: <a asp-page="/Index" class="navbar-brand" ...
- css3实现聊天气泡
1: <div class="comment"></div><style type="text/css"> .comment ...
- C语言之++--
#include<stdio.h>int main(){int num,count=0,i=0;scanf("%d",&num);printf("nu ...
- JSP6(JSP 指令与JSP 动作元素)
一.JSP指令用来设置整个JSP页面相关的属性 指令可以有很多个属性,它们以键值对的形式存在,并用逗号隔开. JSP中的三种指令标签: Page指令 Page指令为容器提供当前页面的使用说明.一个JS ...
- Linux系统bashshell之别名
1.别名的查看: 命令查看:alias 配置文件查看:cat ~/.bashrc 2:别名设置: alias cdnet="cd /etc/sysconfig/network-scri ...
- mysql常用的操作
数据库的常用操作:create database db1; #创建数据库show databases; #查看所有数据库show create database db1;#查看创建的指定数据库alte ...
- 企业级缓存系统varnish应用
场景 随着公司业务快速发展,公司的电子商务平台已经聚集了很多的忠实粉丝,公司也拿到了投资,这时老板想通过一场类似双十一的活动,进行一场大的促销,届时会有非常多的粉丝访问网站,你的总监与市场部门开完会后 ...
- mysql最佳优化经验
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据 ...
- YiShop_商城网站设计应该注意什么
商城网站的建设,不是一件简单的事情,当然,也不要把商城网站的建设想得那么的复杂,在建设商城网站的时候 ,只要考虑到以下这些因素,定能把商城网站建设工作做好.那么商城网站建设要考虑哪些因素:(1)风格 ...
- jQuer __Ajax DOM
链接:在线jQueryhttp://www.bootcdn.cn 一.each(遍历) $("ul li").each(function(index,value){ ale ...