美文网首页
Android Framework学习之idleHandler的

Android Framework学习之idleHandler的

作者: 一只二凡子 | 来源:发表于2022-12-29 09:09 被阅读0次

说说IdleHandler的原理

MessageQueue里的addIdleHandler方法

IdleHandler的调用时机:当next方法里的nativePollOnce返回后,并且当前时刻MessageQueue里没有message需要分发的话,就要处理idleHandler了

Framework里哪些地方用到了IdleHandler

主线程添加了一个CG操作的IdleHandler,返回false,说明这个CG IdleHandler只执行了一次。

queueIdle返回false:只执行一次

mMessageQueue.addIdleHandler(new Idle(recipient)); 添加这个Idle时有可能当前的MessageQueue就是Idle状态,这个Idle的queueIdle是不会被触发的,所以下一行往MessageQueue里添加了一个message,EmptyRunnable这就确保了这个Idle肯定会被执行的

同步等待线程进入idle状态

postDelayed:可以换成IdleHandler的解决方案,更合理

场景:打开App时收到一堆推送,此时需要逐个处理这些推送,每处理一条推送就需要刷新一下界面,如果刷新界面是个很重的task的话,每处理一条推送就刷新一下界面不太合理。

解决方法:开一个工作线程,启动MessageQueue,并添加一个IdleHandler,来一个推送就将其封装成消息放到工作线程的MessageQueue里去处理,等这些消息全部处理完后,MessageQueue处于Idle状态,这时再去汇总结果,刷新界面。

说说IdleHandler的原理?

这个是干嘛的?

他的实现原理是怎么样的?

        他是怎么触发的?IdleHandler.queueIdle()的返回结果有什么意义?return true: 一直有效, return false:一次性的

    3. 自己的项目中用到了没有,举例说明下

相关文章

网友评论

      本文标题:Android Framework学习之idleHandler的

      本文链接:https://www.haomeiwen.com/subject/qxghqdtx.html