今日handler机制面试回答(handler机制的原理)
大家好,小柳来为大家解答以上问题。handler机制面试回答,handler机制的原理很多人还不知道,现在让我们一起来看看吧!
1、Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)。
2、Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到MessageQueue里;或者接收Looper从Message Queue取出)所送来的消息。
3、Message Queue(消息队列):用来存放线程放入的消息。
4、线程:UIthread 通常就是main thread,而Android启动程序时会替它建立一个MessageQueue。
5、每一个消息都需要被指定的Handler处理,通过Handler创建消息便可以完成此功能。
6、Android消息机制中引入了消息池。
7、Handler创建消息时首先查询消息池中是否有消息存在,如果有直接从消息池中取得,如果没有则重新初始化一个消息实例。
8、使用消息池的好处是:消息不被使用时,并不作为垃圾回收,而是放入消息池,可供下次Handler创建消息时使用。
9、消息池提高了消息对象的复用,减少系统垃圾回收的次数。
10、UI主线程初始化第一个Handler时会通过ThreadLocal创建一个Looper,该Looper与UI主线程一一对应。
11、使用ThreadLocal的目的是保证每一个线程只创建唯一一个Looper。
12、之后其他Handler初始化的时候直接获取第一个Handler创建的Looper。
13、Looper初始化的时候会创建一个消息队列MessageQueue。
14、至此,主线程、消息循环、消息队列之间的关系是1:1:1。
15、UI主线程通过Looper循环查询消息队列UI_MQ,当发现有消息存在时会将消息从消息队列中取出。
16、首先分析消息,通过消息的参数判断该消息对应的Handler,然后将消息分发到指定的Handler进行处理。
本文到此结束,希望对大家有所帮助。
免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!
-
在工业机械领域中,螺旋锥齿轮减速机是一种广泛应用的动力传输设备。它以其独特的结构设计和高效的工作性能,...浏览全文>>
-
腹泻是一种常见的症状,可能由多种原因引起,比如饮食不当、细菌感染或病毒感染等。面对腹泻,很多人会急于寻...浏览全文>>
-
宝宝腹泻时,家长往往会感到焦虑和无助。这时,合理调整宝宝的饮食显得尤为重要。正确的饮食不仅能帮助缓解腹...浏览全文>>
-
在数学的浩瀚星空中,有一种特殊的方程,它以其独特的魅力吸引着无数探索者的目光,这就是丢番图方程。这种方...浏览全文>>
-
现代建构主义者主张,真实世界的问题解决是促进深度学习的有效途径之一。通过参与实际任务或项目活动,学生能...浏览全文>>
-
在电磁学领域中,“动生电动势”是一个非常重要的概念,它描述了当导体或闭合回路中的导体在磁场中运动时,所...浏览全文>>
-
提到火龙果,许多人会立刻联想到它那鲜艳的颜色和独特的外形。这种热带水果不仅味道鲜美,而且营养价值高,深...浏览全文>>
-
在日常生活中,我们常常会遇到一些有趣的语言转换问题,比如“火龙果”这个词汇,它不仅是一种美味的水果,在...浏览全文>>
-
在生活中,我们常常会遇到一些有趣的语言问题,比如“火龙果”这个常见的水果,在英语中应该怎么表达呢?相信...浏览全文>>
-
火龙果树是一种热带水果植物,因其独特的外观和丰富的营养价值而受到许多园艺爱好者的喜爱。然而,要想让火龙...浏览全文>>