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

Android的handler机制的原理?

发布网友 发布时间:2022-04-24 23:54

我来回答

3个回答

热心网友 时间:2022-05-02 15:22

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-05-02 16:40

  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-05-02 18:15

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
...会花滑男单陈巍夺金,羽生结弦挑战 4A 失败获第 4,金博洋第 9,如何... ...充值100块,用花呗买的,到帐200块话费,我要怎么处理,可以叫他扣回... ...充了100电信卡话费,现在蚂蚁花呗叫我10月10日还款。这个我就看不... 我的手机掉了,新手机的蚂蚁花呗登不上,里面有264元没还,我要咋样还款... 我用了蚂蚁花呗充了100话费,但是我的手机和银行卡都掉了,现在我要怎么... 游泳池余氯过高怎么处理 太平洋人寿保险对比中国人寿保险,哪个实力强一点? 中国太平洋人寿保险股份有限公司上市情况 听说好多人在泳池里排尿——游泳池尿素怎样检测呢 如何提高游泳池中水的氯的含量 自己盖房子可以提取住房公积金吗 钢化膜真的能保护屏幕吗? 农村建房怎样提取住房公积金? 自建房如何提取住房公积金。急。。。 钢化膜什么颜色对眼睛好? 自建房如何提取公积金 修房子如何提取住房公积金? 电子面单打印机怎么测试 我的电子面单打印机,每次打面单时都会默认纸张大小为105mm*210mm 电子面单打印机怎么设置?公司新买的电子面单打印机要怎么连?懂得教我下. 快递电子面单打印机怎么操作流程 QR-488 电子面单打印机怎么连打? 快递单打印机打印位置不对应该怎么调啊? 电子面单打印机打一张出一张好的一张空白的 打印机打印电子面单时无规律漏打怎么回事? 电子面单打印机打印快递单,脱机是什么原因。 打印机打不了快递电子面单了? 电子面单打印机打印快递单时打印到条码的位置就不动了怎么回事? 快麦100打印机,打印中通电子面单为什么会出现这种情况。. 打印机打印快递面单时会慢慢跑下去什么原因 农村建房可以提取公积金吗 Android Handler消息机制? 钢化膜真的能保护手机屏幕吗 自建房怎么提取公积金 你们用过什么手机钢化膜来保护眼睛吗? Android在子线程用handler发送的消息,主线程是怎么loop到的 钢化膜保护手机的原理但是有些边边贴不到也不会坏? 在家里盖房子怎样提取住房公积金 Android AIDL进程间通信跟Handler机制有什么区别?有哪个技术已经渐渐被淘汰了吗? 自建房可不可以提取住房公积金 android软件开发中handler怎样理解? 在农村建房能提取公积金吗? 购买、建造、翻建、大修自住住房的提取公积金如何办理,需要什么材料? handler,handler是什么,handler实现机制,在android引进的意图面试 钢化膜保护效果怎么样? 农村自建房提取公积金所需的材料具体有哪些? Android中Handler的主要作用是什么?通俗点,初学。 老家建房怎么提取公积金 Android开发之handlerhandler真的是重新启动一个线程吗 哪位知道自建房怎么提取公积金