首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Handler、Message、Looper、MessageQueue

文章目录 一、什么是handler 二、handler消息机制原理 三、Handler消息机制组件 Handler Message Looper MessageQueue 三、Handler的三种使用方式...方法二:将Handler声明为静态类,activity使用弱引用赋值进去 一、什么是handler 二、handler消息机制原理 handler消息机制原理:本质就是在线程之间实现一个消息队列(MessageQueue...生产者Handler在异步线程通过sendMessageDelayed() 将消息添加至MessageQueue, 消费者Looper通过loop()中死循环将MessageQueue中的msg取出后发送给产生此...2、另外,如果你执行了Handler的postDelayed()方法,该方法会将你的Handler装入一个Message,并把这条Message推到MessageQueue中,那么在你设定的delay到达之前...,会有一条MessageQueue -> Message -> Handler -> Activity的链,导致你的Activity被持有引用而无法被回收。

29060
您找到你想要的搜索结果了吗?
是的
没有找到

Android Handler机制6之MessageQueue简介

本片文章的主要内容如下: 1、MessageQueue简介 2、MessageQueue类注释 3、MessageQueue成员变量 4、MessageQueue的构造函数 5、native层代码的初始化...6、IdleHandler简介 7、MessageQueue中的Message分类 MessageQueue官网 一、MessageQueue简介 MessageQueue即消息队列,这个消息队列和上篇文章里面的...需要注意的是Java层的MessageQueue负责处理Java的消息,native也有一个MessageQueue负责处理native的消息,本文重点是Java层,所以暂时不分析native源码。...MessageQueue构造函数.png 我们知道MessageQueue就一个构造函数 代码在MessageQueue.java 68行 MessageQueue(boolean quitAllowed...中就可以了,例如下面简答的代码所示 MessageQueue messageQueue = Looper.myQueue(); messageQueue.addIdleHandler(new

93420

【Android】Handler 机制 ( Handler | Message | Looper | MessageQueue )

中的消息 , 分发给 Handler 处理 ; ④ MessageQueue ( 消息队列 ) : 封装在 Looper 中 , 每个 Looper 中封装了一个 MessageQueue , 是 Looper...Handler 机制 Handler Message Looper MessageQueue 四组件对应关系 ---- Handler , Message , Looper , MessageQueue...Looper 内部 , 每个 Looper 中只定义了一个 MessageQueue ( 消息队列 ) , 因此每个线程也只能有一个 MessageQueue ; 线程 与 Looper ( 消息遍历者...//获取 Looper 对象后 , 可以从 Looper 对象中获取 MessageQueue //关联后 , Handler 发送消息时 , 才能将消息精准的发送给 final MessageQueue...) 发送给 Looper 线程中的 MessageQueue 中 ; Looper 轮询该 消息队列 ( MessageQueue ) , 将消息再次分发给对应的 Handler 进行处理 ; IV

1.3K20

深入Android Handler,MessageQueue与Looper关系

它的loop方法负责读取MessageQueue中的消息,读到消息后把消息发送给Handler进行处理。 MessageQueue:消息队列,它采用先进先出的方式来管理Message。...至内MessageQueue的内部实现,这个属于数据结构的范畴,我们就不过多讨论了,还是回到原来的主题上来,到这里我们都知道Handler发送的消息最终会添加到MessageQueue中,但到达MessageQueue...还记得我们前面说过MessageQueue是由Looper负责管理的吧,现在我们就来看看Looper到底是如何管理MessageQueue的?...这里还有一个要注意的是在Looper创建的同时MessageQueue消息队列也被创建完成,这样的话Looper中就持有了MessageQueue对象。...Looper,对应一个MessageQueue

76031
领券