Handler:是一个消息分发对象,进行发送和处理消息,并且其 Runnable 对象与一个线程的 MessageQueue 关联。
作用:调度消息,将一个任务切换到某个指定的线程中去执行。

Message为Handler接受和处理的消息对象。

MessageQueue为消息队列以先进先出的方式管理Message。

Looper负责读取MessageQueue,读到之后交给发送消息的Handle进行处理。创建时会在构造器中创建MessageQueue对象。

主要是子线程中的程序使用Message夹带数据传输至handler中,完成子线程对主线程的ui更新。

使用方法:

方法一:实现 Runnable 接口,实现 run 方法。创建一个 handler,在 run 方法中进行更新 UI 操作。

// 方法一
new Thread(new Runnable() {@Overridepublic void run() {handler.post(new Runnable() {@Overridepublic void run() {/**更新UI*/}});}}).start();

方法二:sendMessage(Message)

创建一个工作线程,继承 Thread,重新 run 方法

创建一个 Message 对象,设置 what 标志及数据

通过 sendMessage 进行投递消息

创建一个handler,重写 handleMessage 方法,根据 msg.what 信息判断,接收对应的信息,更新 UI。

// 方法二
private Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {      //判断标志位case 1:/**获取数据,更新UI*/break;}}
};public class WorkThread extends Thread {@Overridepublic void run() {super.run();/**耗时操作*///从全局池中返回一个message实例,避免多次创建message(如new Message)Message msg =Message.obtain();  msg.obj = data;msg.what=1;   //标志消息的标志handler.sendMessage(msg);}}

通信机制

关于Handle的一些介绍相关推荐

  1. http参数 libcurl_LibCurl HTTP部分详细介绍

    一.LibCurl基本编程框架 libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcurl ...

  2. VMP学习笔记之Handle块优化与壳模板初始化(四)

    参考资料: 本文大量内容抄袭看雪作者:waiWH的VMP系列 1.名称:谈谈vmp的还原(2) 网址:[原创]谈谈vmp的还原(1)-软件逆向-看雪论坛-安全社区|安全招聘|bbs.pediy.com ...

  3. ssl握手过程和ca证书验证

    转载:https://www.cnblogs.com/cposture/p/9029014.html SSL 认证 可以将 SSL 服务器与客户端之间的通信配置为使用单向或双向 SSL 认证. 单向 ...

  4. DRM驱动(三)之CREATE_DUMB

    上节讲到显示处理器会将一块含有图像数据的memory进行处理后送到下一级.后面几节我会根据龙哥的<最简单的DRM应用程序>一步一步分析用户调用的接口在drm驱动中有怎么样的处理. DRM驱 ...

  5. 抓到Netty一个隐藏很深的内存泄露Bug | 详解Recycler对象池的精妙设计与实现

    本系列Netty源码解析文章基于 4.1.56.Final版本 最近在 Review Netty 代码的时候,不小心用我的肉眼抓到了一个隐藏很深很深的内存泄露 Bug. 于是笔者将这个故事-哦不 -事 ...

  6. android之媒体硬解OMX的实现

    android的多媒体部分采用的编解码标准是OMX,当然这个标准是用于硬件编解码的,软件编解码在这里我就不说了. 直接从stagefright的awesomeplayer开始说起吧,如果看过我前面博客 ...

  7. http参数 libcurl_Http协议之libcurl实现

    一.libcurl简介 libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcurl同样支持 ...

  8. WinCE中串口驱动及接口函数介绍(转载)

    作者:ARM-WinCE 在WinCE中,串口驱动实际上就是一个流设备驱动,具体架构如图: 串口驱动本身分为MDD层和PDD层.MDD层对上层的Device Manager提供了标准的流设备驱动接口( ...

  9. PHP内核介绍及扩展开发指南—基础知识

    一. 基础知识 本章简要介绍一些Zend引擎的内部机制,这些知识和Extensions密切相关,同时也可以帮助我们写出更加高效的PHP代码. 1.1 PHP变量的存储 1.1.1 zval结构 Zen ...

最新文章

  1. Microsoft .Net Remoting系列专题之二:Marshal、Disconnect与生命周期以及跟踪服务
  2. oracle增量备份如何恢复,【Oracle】增量备份和全库备份怎么恢复数据库
  3. NameError: name 'go' is not defined
  4. mdadm中文man帮助
  5. 编程语言----00程序员常用网站
  6. idea迁移到其他电脑,省去重新安装破解及配置
  7. Mysql多表关联删除操作
  8. PN结空间电荷区形成原理
  9. Linux学习之CentOS(三十三)--DNS基础及域名系统架构
  10. html——attr与val、attr与prop、attr与css区别
  11. ElasticSearch Group by Multi Field,多字段聚合
  12. c# 获取路径的盘符_C# IO操作之 如何玩转路径
  13. WPS删除表格后的空白页
  14. Javaweb新手软件推荐
  15. 搭建syslog日志服务器
  16. LaTeX 文档类型
  17. Cesium 拾取 API 完全总结
  18. python对seo有什么用_pythonseo-python对于做SEO主要有什么作用
  19. POS机刷卡跨行交易的清算方式
  20. .Net混淆工具和反混淆工具

热门文章

  1. MyBatis逆向工程去除表名前缀
  2. hasattr()函数的用法
  3. JSON格式转MAP的6种方法
  4. 作为一个程序员,你真的知道如何学好编程吗?
  5. hangfire-简单开始
  6. 三种求最短路算法基本描述及实现(C++)
  7. 计算机网络隧道技术,隧道技术-高级计算机网络.ppt
  8. 小程序助力银行数字化转型
  9. 转-超声波CX20106A的内部电路图
  10. python文件写入后,但文件还是空白