android平台不允许Activity新启动的线程访问该Activity里的界面组件,这样就导致新启动的线程无法动态的改变界面组件的属性值。但是实际android应用开发中,需要新启动的线程周期性地修改界面组件的属性值。

Handler类简介

主要作用:

1、在新启动的线程中发送消息

2、在主线程中获取、处理消息

为了让主线程“适时”地处理新启动的线程所发送的消息,Handler是通过回调的方式来实现的——开发中只要重写Handler类中处理消息的方法,当新启动的线程发送消息时,Handler类中处理消息的方法被自动回调。

Handler类的主要方法:

1、void handleMessage(Message msg):处理消息的方法,通常被重写

2、final boolean hasMessages(int what):检查消息队列中是否包含what属性为指定值的消息

3、final boolean hasMessages(int what, Object object):检查消息队列中是否包含what属性为指定值并且object属性为指定值的对象的消息

4、多个重载的final Message obtainMessage()方法:获取消息

5、final boolean sendEmptyMessage(int what):发送空消息

6、final boolean sendEmptyMessageDelayed(int what, long delayMillis):延迟发送空消息

7、final boolean sendMessage(Message msg):立即发送消息

8、final boolean sendMessageDelayed(Message msg, long delayMillis):延迟发送消息

android中的Handler消息传输机制的更多相关文章

  1. Android基本功:Handler消息传送机制

    一.什么是UI线程 当程序第一次启动的时候,Android会同时启动一条主线程( Main Thread). 主要负责处理与UI相关的事件. 二.UI线程存在的问题 出于性能优化考虑,Android的 ...

  2. Android中的Handler,Looper,Message机制

    Android的消息处理有三个核心类:Looper,Handler和Message.其实还有一个Message Queue(消息队列),但是MQ被封装到Looper里面了,我们不会直接与MQ打交道,因 ...

  3. Android中利用Handler实现消息的分发机制(三)

    在第二篇文章<Android中利用Handler实现消息的分发机制(一)>中,我们讲到主线程的Looper是Android系统在启动App的时候,已经帮我们创建好了,而假设在子线程中须要去 ...

  4. Android消息传递之Handler消息机制

    前言: 无论是现在所做的项目还是以前的项目中,都会遇见线程之间通信.组件之间通信,目前统一采用EventBus来做处理,在总结学习EventBus之前,觉得还是需要学习总结一下最初的实现方式,也算是不 ...

  5. Android中的Handler的机制与用法详解

    概述: 很多android初学者对android 中的handler不是很明白,其实Google参考了Windows的消息处理机制, 在Android系统中实现了一套类似的消息处理机制.在下面介绍ha ...

  6. 转:Android中的Handler的机制与用法详解

    注:Message类的用法: message的几个参数都可以携带数据,其中arg1与arg2可以携带int类型,what是用户自定义的int型,这样接受者可以了解这个消息的信息. 说明:使用Messa ...

  7. Android中使用Handler造成内存泄露的分析和解决

    什么是内存泄露?Java使用有向图机制,通过GC自动检查内存中的对象(什么时候检查由虚拟机决定),如果GC发现一个或一组对象为不可到达状态,则将该对象从内存中回收.也就是说,一个对象不被任何引用所指向 ...

  8. Android中使用Handler造成内存泄露

    1.什么是内存泄露? Java使用有向图机制,通过GC自动检查内存中的对象(什么时候检查由虚拟机决定),如果GC发现一个或一组对象为不可到达状态,则将该对象从内存中回收.也就是说,一个对象不被任何引用 ...

  9. 深入源代码解析Android中的Handler,Message,MessageQueue,Looper

    本文主要是对Handler和消息循环的实现原理进行源代码分析.假设不熟悉Handler能够參见博文< Android中Handler的使用>,里面对Android为何以引入Handler机 ...

随机推荐

  1. 区别:javascript:void(0);javascript:;

    2015-07~2015-08 区别:javascript:void(0);javascript:; href="#",包含了一个位置信息.默认的锚是#top,也就是网页的上端. ...

  2. element ui step组件在另一侧加时间轴显示

    这是我开发的时候遇到的一个问题:项目需要在步骤条(竖直方向)的另一侧加时间显示,但是我在element ui 的step组件中一直没找着设置方法,所以就自己想了个办法加进来,效果如下: 代码如下,先上 ...

  3. url传送图片的base64编码给web客户端

    base64编码图片: #python3.6 import base64 with open("./aa.jpg", "rb") as f: data = ba ...

  4. KiCAD层颜色修改

    KiCAD层颜色修改 KiCAD的PCB各层的颜色太过于暗淡,有时可能不适合操作者的习惯,尤其是铜层(布线层),这时候就需要去修改层的颜色,具体操作如下图:选择想要修改的层,双击左边颜色框框,进入之后 ...

  5. 封装加减乘除函数 解决JS 浮点数计算 Bug

    计算机内部的信息都是由二进制方式表示的,即0和1组成的各种编码,但由于某些浮点数没办法用二进制准确的表示出来,也就带来了一系列精度问题.当然这也不是JS独有的问题. 例如, 我们在用JS做浮点运算会遇 ...

  6. Eclipse maven 明明有jar包 但是不能用

    原因1:没有引入pom.xml依赖 解决: 添加pom.xml依赖

  7. rest framework 之前

    在开始rest framework之前,我们先来了解一下什么是restful rest 是一种软件架构风格,Representational state Transfer 它从资源的角度去看整个网络, ...

  8. javascript基本类型及类型转换

    每种语言都有自己的基本类型,javascript也不例外.在javascript中有五大基本类型,分别是number,string,boolean,null,undefined.其他不属于这五种基本类 ...

  9. springCloud参考资料

    官网: http://spring.io/projects/spring-cloud 各组件说明(中文版):https://springcloud.cc/spring-cloud-netflflix. ...

  10. python语法学习

    global关键字(内部作用域想要对外部作用域的变量进行修改) decator装饰器,说白了就是一个函数指针的传递 *arg,**kwarg, 分别为tuple,dic传递