关于Handler的总结。

Message:消息,其中包含了消息ID,消息处理对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理。

Handler:处理者,负责Message的发送及处理。使用Handler时,需要实现handleMessage(Message msg)方法来对特定的Message进行处理,例如更新UI等。

MessageQueue:消息队列,用来存放Handler发送过来的消息,并按照FIFO规则执行。当然,存放Message并非实际意义的保存,而是将Message以链表的方式串联起来的,等待Looper的抽取。

Looper:消息泵,不断地从MessageQueue中抽取Message执行。因此,一个MessageQueue需要一个Looper。

Thread:线程,负责调度整个消息循环,即消息循环的执行场所。

如图所示,Handler负责将数据压栈到Message队尾中,并从队头取出数据,而Looper负责从队列中进行循环取出,得到Handler的数据。注意Looper必须是UI的Looper,我们才能对UI界面进行更新!

Android开发之Handler和Looper的关系相关推荐

  1. Android开发之Handler

    Handler 定义与作用 主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释:当应用程序启动时,Android 首先会开启一个主线程(也就是UI线程),主线程为管理界面中的UI控件,进 ...

  2. Android开发之Handler的使用方法(源代码分享)

    Handler主要接受子线程发送的数据, 并用此数据配合主线程更新UI.. 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发.比 ...

  3. Android开发之Handler机制记录

    1.Handler 机制 说到 Handler,就不得不提与之密切相关的这几个类:Message.MessageQueue,Looper: Message: Message 中有两个成员变量值得关注: ...

  4. 安卓开发之Handler、HandlerThread学习篇

    安卓开发之Handler.HandlerThread学习心得篇           开篇说明:本文采用的都是最基础最简单的例子,目的只有一个:希望大家将学习的焦点放在Handler的理解和使用上,我不 ...

  5. android之json解析优化,Android开发之json解析

    目前正在尝试着写app,发现看懂代码和能写出来差距很大,最关键的是java基础比较的差,因为只会python,java基础只学习了一个礼拜就过了.感觉java写出来的代码不如python简单明了. 上 ...

  6. Android开发之ViewPager+ActionBar+Fragment实现响应式可滑动Tab

    今天我们要实现的这个效果呢,在Android的应用中十分地常见,我们可以看到下面两张图,无论是系统内置的联系人应用,还是AnyView的阅读器应用,我们总能找到这样的影子,当我们滑动屏幕时,Tab可以 ...

  7. Android开发之BroadcastReceiver

    Android开发之BroadcastReceiver BroadcastReceiver介绍 广播的种类 标准广播(Normal Broadcast) 有序广播(Ordered Broadcast) ...

  8. android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序

    android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序   在应用里使用了后台服务,并且在通知栏推送了消息,希望点击这个消息回到activity, ...

  9. Android开发之TextView高级应用

    Android开发之TextView高级应用 我们平时使用TextView往往让它作为一个显示文字的容器,但TextView的功能并不局限于此.以下就和大家分享一下TextView的一些使用技巧. A ...

最新文章

  1. POJ 2104 K-th Number(区间第k大数)(平方切割,归并树,划分树)
  2. Ada 程序设计语言(The Ada Programming Language)[第二集]
  3. E431 笔记本电池问题 0190 Critical low-battery error 解决办法
  4. CentOS 7安装Redis服务
  5. PullToRefresh使用详解(四)--利用回调函数实现到底加载
  6. 探索:区块链视频流媒体平台
  7. CSS3之box-shadow(阴影)和border属性
  8. 【教程】一个国外的apk镜像网站,支持下载google play等软件
  9. Linux下一种 ELF 文件的代码签名验证机制
  10. Cherno_游戏引擎系列教程(1):1~16
  11. 决策树常见的面试点整理
  12. 手机有时触摸失灵解决方法
  13. 【消息中心】架构准备
  14. 基于MFC开发的单文档画图(线段,多线段,矩形,椭圆,多边形),选中,变色,平移,线段长度,区域面积计算
  15. 软件测试 | 测试开发 | Git实战(四)| Git分支管理实操,搞定在线合并和本地合并
  16. 贝索斯、比尔盖茨和库克认为你应该阅读的7本书
  17. WPF Image控件鼠标双击事件的实现
  18. 超透镜消色差方法理解与总结
  19. shell教程(二) 四种工作模式
  20. 出门在外的游子都要回到母亲的身旁

热门文章

  1. html带颜色表格怎么做,使用HTML添加表格4(行颜色与表格嵌套)——零基础自学网页制作...
  2. mysql怎么加全局锁_MySQL锁机制/管理(并发锁,行锁,表锁,预加锁,全局锁等等)
  3. 蓝卡获得地_德国蓝卡究竟是什么?为什么这么多人都想移民德国?
  4. Java awt Desktop 无法调用系统浏览器
  5. 话说文件系统——aufs源码分析(三)【转】
  6. js获取当前浏览器地址栏的链接,然后在链接后面加参数
  7. Apache的Rewrite规则详细介绍
  8. 58到家技术总监沈剑:有选择的借鉴才能不走弯路
  9. Autofac 解释第一个例子 《第一篇》
  10. linux下进制是如何转换?