Handler相关概念简介
来源:互联网 发布:帝国cms怎么建站 编辑:程序博客网 时间:2024/06/05 10:35
Handler
Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分在消息队列中逐一将消息取出,然后对消息进行处理,也就是发送消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的操作。
特点
1. 传递Message。用于接受子线程发送的数据, 并用此数据配合主线程更新UI。
在Android中,对于UI的操作通常需要放在主线程中进行操作。如果在子线程中有关于UI的操作,那么就需要把数据消息作为一个Message对象发送到消息队列中,然后,由Handler中的handlerMessage方法处理传过来的数据信息,并操作UI。当然,Handler对象是在主线程中初始化的,因为它需要绑定在主线程的消息队列中。
类sendMessage(Message msg)方法实现发送消息的操作。 在初始化Handler对象时重写的handleMessage方法来接收Message并进行相关操作。
2. 传递Runnable对象。用于通过Handler绑定的消息队列,安排不同操作的执行顺序。
Handler对象在进行初始化的时候,会默认的自动绑定消息队列。利用类post方法,可以将Runnable对象发送到消息队列中,按照队列的机制按顺序执行不同的Runnable对象中的run方法。
Message
Message是在线程之间传递的信息,它可以在内部携带少量的信息,用于在不同线程之间交换数据。例如Message的what字段来验证消息,arg1和arg2字段来携带一些整型数据,使用obj字段携带一个object对象。
MessageQueue
MessageQueue是消息队列的意思,它主要用于存放所有通过Handler发送的消息。这部分消息会一直存在于消息队列中,等待被处理。每个线程中只有一个MessageQueue对象。
Looper
Looper是每个线程中的MessageQueue的管家,调用Looper的loop()方法后,就会进入到一个无限循环当中,然后每当发现MessageQueue中存在一条消息,就会将它取出,并传递到Handler的handleMessage()方法中。每个线程中也只有一个Looper对象。
异步消息处理的流程
首先需要在主线程当中创建一个Handler对象,并重写handleMessage()方法。然后当子线程中需要进行UI操作时,就创建一个Message对象,并通过Handler将这条消息发送出去。之后这条消息会被添加到MessageQueue到队列中等待被处理,而Looper则会一直尝试从MessageQueue中取出待处理消息,最后分发回Handler的handleMessage()方法中。由于Handler是在主线程中创建的,所以此时handleMessage()方法中的代码也会在主线程中运行,于是我们在这里就可以安心地进行UI操作了。整个异步消息处理机制的流程示意图如图所示。
- Handler相关概念简介
- 网络相关概念简介
- 转:WebService相关概念简介
- SAS技术简介(相关概念)
- Oracle表的相关概念简介
- 深度学习_简介及相关概念
- handler 简介
- Handler简介
- handler相关
- Handler相关
- Handler相关
- handler相关
- Git分支及其相关概念和命令简介
- android handler概念解释
- Handler概念详解
- 相关概念
- Android - Handler的简介
- Webservice_16_SOAP的handler简介
- 使用加密工具类进行有效的字符串加密——CSDN博客
- 如何解决Mysql中中文乱码的问题
- 冒泡排序算法之JAVA实现
- 多校7 HDU-6130 Kolakoski 构造数列 & 模拟
- nginx 卸载
- Handler相关概念简介
- 致敬高斯林的第一天
- <8/15>集训日记
- mybatis快速入门(一)
- CentOS访问Windows共享文件夹的两种方法
- android studio2.3.2增加jni
- 利用java 写XML 修改XML文件
- python多线程爬虫学习--去除html的标签
- hadoop map reduce高级