问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android中我们为什么要用handler

发布网友 发布时间:2022-04-21 23:58

我来回答

3个回答

热心网友 时间:2022-07-11 21:57

Android的handler机制的原理分为异步通信准备,消息发送,消息循环,消息处理。

1、异步通信准备

在主线程中创建处理器对象(Looper)、 消息队列对象(Message Queue)和Handler对象。

2、消息入队

工作线程通过Handler发送消息(Message) 到消息队列(Message Queue)中。

3、消息循环

消息出队: Looper循环取出消息队列(Message Queue) 中的的消息(Message)。

消息分发: Looper将取出的消息 (Message) 发送给创建该消息的处理者(Handler)。

4、消息处理

处理者(Handler) 接收处理器(Looper) 发送过来的消息(Message),根据消息(Message) 进行U操作。

handler的作用

handler是android线程之间的消息机制,主要的作用是将一个任务切换到指定的线程中去执行,(准确的说是切换到构成handler的looper所在的线程中去出处理)android系统中的一个例子就是主线程中的所有操作都是通过主线程中的handler去处理的。

Handler的运行需要底层的 messagequeue和 looper做支撑。



热心网友 时间:2022-07-11 21:57

  Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分在消息队列中逐一将消息取出,然后对消息进行处理,也就是发送消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的操作。

  一、Handler的定义:
  主要接受子线程发送的数据, 并用此数据配合主线程更新UI。
  解释:当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件, 进行事件分发, 比如说, 你要是点击一个 Button ,Android会分发事件到Button上,来响应你的操作。 如果此时需要一个耗时的操作,例如: 联网读取数据, 或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,如果你放在主线程中的话,界面会出现假死现象, 如果5秒钟还没有完成的话,会收到Android系统的一个错误提示 "强制关闭"。 这个时候我们需要把这些耗时的操作,放在一个子线程中,因为子线程涉及到UI更新,,Android主线程是线程不安全的, 也就是说,更新UI只能在主线程中更新,子线程中操作是危险的。 这个时候,Handler就出现了。,来解决这个复杂的问题 ,由于Handler运行在主线程中(UI线程中), 它与子线程可以通过Message对象来传递数据, 这个时候,Handler就承担着接受子线程传过来的(子线程用sedMessage()方法传弟)Message对象,(里面包含数据) , 把这些消息放入主线程队列中,配合主线程进行更新UI。
  二、Handler一些特点
  handler可以分发Message对象和Runnable对象到主线程中, 每个Handler实例,都会绑定到创建他的线程中(一般是位于主线程),它有两个作用:
  (1)安排消息或Runnable 在某个主线程中某个地方执行;
  (2)安排一个动作在不同的线程中执行。
  三、Handler实例
  子类需要继承Hendler类,并重写handleMessage(Message msg) 方法, 用于接受线程数据。

热心网友 时间:2022-07-11 21:57

andriod提供了 Handler 和 Looper 来满足线程间的通信。Handler 先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(Message Exchange)。  1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)。  2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Looper从Message Queue取出)所送来的消息。    3) Message Queue(消息队列):用来存放线程放入的消息。  4)线程:UI thread 通常就是main thread,而Android启动程序时会替它建立一个Message Queue。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 片假名 是什么? Android中的Handler详解以及和Thread的区别 求ANDROID中handler的问题 怎样快速准确的记住日语的平假字和片假字 android待机时handler 会运行吗 日语所有片假名的读法!!! android 使用handler为什么会造成内存泄漏 あ是什么意思? android中多个子线程中定义多个Handler的问题,求解答 a的片假名几笔? 简述android studio中handler通信 怎样辨别铜手镯和金手镯??? Android Handler消息机制? 我想查看手镯是不是金的 标点符号练习答案 安卓用另一个界面的handler 怎么用 handler的使用 实心手镯如何辨别里面是不是真金? 怎么样设置默认浏览器 Android的handler机制 日语中,什么是片假名? android中 private Handler mHandler = new Handle... "平假字"和"片假字"有什么区别 日语假名あ的大小写问题 日语中的片假名是什么意思? あ--平假名 ア--片假名 a--罗马字 学习日语的软件... 日语中平假名、片假名什么意思? 日语的平假名和片假名对照表? 快手小铃真的可以领188元吗 yy主播MC小凌个人资料? 小玲玩具里的小玲月儿夏天什么大学毕业? 打赏女主播30万后被拉黑男子轻生,你如何看待这件事? 快手小铃铛赚钱是真的吗? 小玲玩具里小玲月儿夏天什么大学毕业? 我和僵尸有个约会2每一集的剧情! 快手小铃铛移动卡送手机是真的吗 我和僵尸有个约会23两部的剧情,拒绝只给个链结的人。 我和僵尸有个约会有几集? 我最爱的人电视剧里小玲的扮演者 我要 我和僵尸有个约会 的全套文章(文字的)