handler因为可以异步通信的特别之处,在平时开发过程中使用比较多,根据自己平时的理解和记录,将整理的handler一些信息写出来,如果有理解不到之处,希望各位大神多多包涵,并指正。

1.handler是一个消息分发对象。

2,.handler的作用:完成Android中的线程通信(数据的异步加载显示,在子线程中完成耗时操作,在子线程中加载之后通知UI线程显示数据)

3.AsyncTask和Handler的区别:

相同点:完成线程的通信,实现数据的异步加载

不同点:AsyncTask把通信涉及的所有的步骤已经全部封装好,只需要记住封装好的框架,在框架中填入对应代码即可。

如果使用Handler完成线程通信,那么所有涉及的步骤都需要自行创建。

当一个程序创建的时候,会为该程序创建一个线程,这个进程中创建一个主线程(UI线程),并运行一个消息队列(MessageQueue),这个消息队列管理应用程序中的最高级别的对象(四大组件)和这些对象所创建出来的窗口。

4.队列特点:先进先出

5.如何实现通信:

handler要在主线程中创建,完成之后,handler会和UI线程以及UI线程的MessageQueue关联,当通过handler在子线程中发送Message时,Message对象就会被发送到主线程的MessageQueue中。当主线程中的MessageQueue有新的Message进入队列时,监视这个MessageQueue的Looper就会将新进入队列的Message对象从队列中取出,传递给UI线程的Handler。

6.post方法:

在子线程中通过post方法发送一个Runnable对象,该对象会被添加到主线程队列的执行顺序中,主线程会调用Runnable中的run方法,实际上就是在子线程中给主线程添加一个操作

postDelayed方法:

在子线程中网主线程发送一个消息,该消息被主线程接收到之后,会延时执行

postAtme方法:

主线程会在指定的绝对时间点执行Runnable对象

7.send方法

a.sendEmptyMessage方法向主线程中发送一个空消息

b.sendMessage方法可向主线程发送int类型标记,或者已经封装的Message对象

c.sendMessageDelayed、sendMessageAtTIme这两个方法和post的两个方法作用类似

8.Message

arg1携带简单的一个整数

arg2携带简单的一个整数

what用户自定义的Message对象的编码

obj引用类型可以让Message对象携带引用类型的数据(字符串)

创建Message对象的时候,建议用Message.obtain()方法,不要直接new对象。

9.Looper

作用:监视消息队列,当发现消息队列中有新消息的时候,把该新消息取出传递给关联的Handler

Android 封装handler,Android 异步通信原理机制-- handler相关推荐

  1. Android封装快捷键,android打包一个没有快捷键的apk,并且通过另一个应用启动

    1.有时候我们的需求是每个功能可能类似一个插件那样分开,需要我们分别不同开发 2.首先我们如何安装apk之后不显示Lanch呢? android:name=".app.Books.Books ...

  2. dagger2 android封装,Dagger2 Android应用:@Component和@Module

    这部分会介绍一下DI的主要概念,包括Component,Module,但不涉及和Android有关的具体代码. 目的是在剥离实际开发的情况下先建立Component的概念,因为在DI中这是它的最主要部 ...

  3. android封装浏览器,android利用WebView实现浏览器的封装

    android提供了封装浏览器的接口,可以让开发者利用自己的view显示网页内容.今天又实现研究了一下,利用WebView显示浏览器内容,还可以利用 WebViewClient显示自己需要的内容. 效 ...

  4. android封装oauth2,Android AccountAuthenticator和OAuth2

    这肯定是可行的.来自Android AccountManager文档: Many servers support some notion of an authentication token, whi ...

  5. android 手机内存uri_Android消息机制Handler原理解析

    关注[搜狐技术产品]公众号,第一时间获取技术干货 导读 在Android中,Handler一直是一个热点,在开发过程中,它的使用频率很高,而且在Android源码中Handler都是常客.那么Hand ...

  6. Android消息机制Handler用法

    这篇文章介绍了Android消息机制Handler用法总结,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 1.简述 Handler消息机制主要包括: Messa ...

  7. Android之异步消息处理机制Handler源码解析

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/76083113 本文出自:[顾林海的博客] 个人开发的微信小程序,目前功 ...

  8. 【Android 异步操作】Handler ( 主线程中的 Handler 与 Looper | Handler 原理简介 )

    文章目录 一.主线程中的 Handler 与 Looper 二.Handler 原理简介 一.主线程中的 Handler 与 Looper Android 系统中 , 点击图标启动一个应用进程 , 就 ...

  9. 【Android】Handler 机制 ( Handler | Message | Looper | MessageQueue )

    文章目录 I . Handler 机制简介 II . Handler 机制 Handler Message Looper MessageQueue 四组件对应关系 III . Handler ( 消息 ...

最新文章

  1. ssh密钥分发之二:使用sshpass配合ssh-kopy-id编写脚本批量分发密钥:
  2. ubuntu pip 安装
  3. Flutter创建圆圈图标按钮
  4. 解决C# 7.2中的结构体性能问题
  5. centos移动文件到指定目录_Dynamo批量分离中心文件并另存到指定目录
  6. Caused by: java.lang.IllegalStateException: StandardEngine[Tomcat].StandardHost[localhost].TomcatEmb
  7. hdu 1710 Binary Tree Traversals (二叉树)
  8. CSS基础——CSS样式的引入和规则【学习笔记】
  9. Cocos2d-x Touch事件处理机制(better)
  10. HttpClient 4.5.3 模拟登陆CSDN
  11. 显卡功耗测试用什么软件,跑什么测试显卡功耗最高:这20个项目能给你答案
  12. 一文掌握智能抠图Deep Image Matting(pytorch实现)
  13. mysql根据出生日期计算年龄并查询
  14. 商标注册中的字体也会侵权?这是真事
  15. 大学必备C语言基础知识(一)
  16. 大事发生,程序员一直在守护世界
  17. 【考研经验】双非二战山东大学计算机技术初试第二经验贴
  18. GOCAD 2009 完整版功能强大的三维地质建模软件
  19. PDF怎么转换成PPT且可以修改里面的文字
  20. 创意电子学-小知识:面包板

热门文章

  1. oracle在linux上使用裸设备,在linux下构建基于LVM的裸设备数据库
  2. 分布式架构中数据一致性常见的几个问题
  3. Java基础学习总结(95)——Java反射主要用来干什么?
  4. C/S与B/S架构比较
  5. java分页插件使用_MyBatis-Plus之分页插件使用
  6. python 批量查询网页导出结果_李亚涛:python批量查询网页收录情况并计算收录率...
  7. R循环有两个_R语言数据分析与挖掘(第九章):聚类分析(2)——层次聚类
  8. java 防止证书导出_如何把安全证书导入到java中的cacerts证书库
  9. Java提高班(五)深入理解BIO、NIO、AIO
  10. EOS cleos --skip-transaction-signatures 跳过签名