1.handler是什么?

是android提供用于更新ui的一套机制,也是处理消息的机制

作用:

a.新启动的线程中发送消息

b.主线程中获取,处理消息

2.为什么要使用handler?

答:android在设计的时候,封装了一套消息创建,传递,处理机制,如果不遵循这套机制就不能更新ui,会抛出异常信息(不能在非线程中更新ui)

2.handler机制

handler机制也叫做异步消息机制,主要由四部分组成

a.Message

Message用于线程间传递消息,可携带少量信息,用于不同线程间交换数据。Meaasge的arg1和arg2可携带int数据,使用obj可携带Object数据

b.Handler

子线程中调用sendMessage方法发送Message对象,当消息发送到handler的handleMessage方法中时,Message对象被处理

c.MessageQueue

用于存放handler发送过来的消息,每个线程只有一个消息队列,该队列只存放Message对象

d.Looper

Looper是每个线程中MessageQueue的管家,调用Looper.loop()后就会进入一个无限循环中,循环检查是有消息,如果有消息,则循环取出MessageQueue中的每一条消息,并传递到handler的handleMessage方法中。每个线程中只有一个Looper对象

2.使用场景

涉及到耗时操作的情况,如联网操作,文件上传下载操作

3.用法

1.主线程中创建handler对象,并重写handleMessage方法

2.创建子线程,涉及子线程需要更新ui操作,创建Messae对象,并携带数据,调用handler的sendMessage方法发送Message对象,随后这个对象会被存放在MessageQueue中等待被处理,由MessageQueue的管家Looper循环取出消息,通过回调DisPatchMessage方法将消息传递给handler的handleMessage方法,最终传递的消息会被Looper从MessageQueue中取出传递给handleMessage方法,最终得到处理

子线程中使用handler接收消息,需要创建Looper

1.Looper.prepare()     创建Looper实例

2.创建handler对象,实现handleMessage方法,取出消息队列中的消息

3.Looper.looper()  循环取出消息

handler的三种使用场景

https://blog.csdn.net/u013718120/article/details/51945490?utm_source=app

handler机制及使用场景相关推荐

  1. handler机制的原理_5分钟了解Handler错误使用场景

    码个蛋(codeegg)第 821 次推文 作者:刁儿郎当 博客:https://www.jianshu.com/p/43e21be8d849 码妞看世界 小燕子叶 写在前面 Handler的相关博客 ...

  2. Android多线程:深入分析 Handler机制源码(二)

    前言 在Android开发的多线程应用场景中,Handler机制十分常用 接下来,深入分析 Handler机制的源码,希望加深理解 目录 1. Handler 机制简介 定义 一套 Android 消 ...

  3. handler机制的原理_Handler机制竟然可以这样解释,我惊呆了!

    Handler的相关博客太多了,随便一搜都一大把,但是基本都是上来就贴源码,讲姿势,短时间不太好弄明白整体的关系,和流程,本文就以生活点餐的例子再结合源码原理进行解析.希望对你有一点帮助. 来,咱们进 ...

  4. Android 系统(189)---Android Handler:这是一份 全面、详细的Handler机制 学习攻略

    Android Handler:这是一份 全面.详细的Handler机制 学习攻略 前言 在Android开发的多线程应用场景中,Handler机制十分常用 今天,我将献上一份 全面.详细的Handl ...

  5. Android Handler的内存泄露场景分析

    在前面一篇博客<Android全面解析Handler>一文中,我们认识了Handler的异步通信机制,同时也提到过Handler如果使用不慎将会导致内存泄露.今天主要来讲述一下Handle ...

  6. handler机制--Handler使用

    这节介绍Handler类使用相关的知识(以下分析都是基于android 12代码) 1. Handler的使用 1.1 创建Handler实例 创建Handler实例直接调用相应的构造函数即可,如下: ...

  7. handler机制--handler概览

    本节主要是对handler机制有一个大概的了解,后面的章节还会详细的分析handler机制. handler产生背景 在介绍handler之前先来介绍下它产生的背景,只有了解了背景才能加深对它的了解. ...

  8. dubbo的handler机制

    Dubbo的整套handler...反正我刚看的时候挺头疼.从Protocol层到Transporter层.纵深3层.从DubboProtocol构建,被逐层传递到NettyServer,然后在逐层返 ...

  9. 自己写个C++版本Handler来理解Android的Handler机制

    由于日常工作不需要经常写android上层应用,对Android的Handler机制一直处于模模糊糊的状态.使用Handler之后,回去写c++代码时,时刻怀念Android里面的Handler,希望 ...

  10. android Handler机制之ThreadLocal详解

    概述 我们在谈Handler机制的时候,其实也就是谈Handler.Message.Looper.MessageQueue之间的关系,对于其工作原理我们不做详解(Handler机制详解). Messa ...

最新文章

  1. +z +Z compiler flag for HP
  2. 构建根文件系统启动(1)
  3. 软件工程 之 动物世界
  4. Python中的lambda是什么?
  5. java swing 面试题_下面有关JAVA swing的描述,说法错误的是?
  6. leetcode初级算法1.删除排序数组中的重复项
  7. 2500万美元和AI专家!谷歌出钱出人,要用AI做“对社会有益”的事情
  8. 【一题多解】Python 字符串逆序
  9. CentOS 配置网络yum源
  10. python 基线拟合
  11. 江西政务服务“掌上办”新模式分享
  12. 冲压模板自动标注LISP_CAD AutoLisp实现自动标注序号
  13. 去除wmv等视频认证的方法
  14. dnf单机版 不显示服务器,dnf单机云服务器
  15. 超好用的在线编程IDE——CS50
  16. 分销小程序功能有哪些?如何使用分销小程序实现裂变卖货?
  17. 软件设计师2017下半年
  18. 7.2 IDEA 没有Java EE
  19. 世上无难事,只怕有心人!
  20. XMPP协议简介[转载]

热门文章

  1. 通过汇编程序理解汇编和链接过程
  2. CMake Cookbook中文手册
  3. 软件优先级优先于硬件优先级_一切都是必须有优先级的
  4. [含lw+辩论PPT+任务书+中期检查表+源码等]基于ssm的NBA球队|篮球管理系统[包运行成功]
  5. iPhone Xs上手体验,原来用绿联的转接线就能边充电边听歌
  6. 雅虎助手是如何自杀式攻击360安全卫士的?雅虎助手,3721是什么恶心人的--(部份转贴)
  7. 如何卸载twincat3_TwinCAT软件安装FAQ
  8. android 画图 工具下载,画板画图软件下载-画板画图 安卓版v1.1.0-PC6安卓网
  9. php 判断是否为中文,php判断是否为中文正则表达式大全
  10. 基于Springboot+websocket的web聊天项目(论文+程序设计源码+数据库文件)