IdleHandler原理的疑问
来源:8-4 说说idleHandler的原理
鹤仙人peter
2019-10-24
老师,MessagQueue.next里边,没有消息的时候,nativePollOnce应该阻塞了啊,为什么还会有mMessage等于null的情况去处理IdleHandler?
写回答
2回答
-
风语
2019-10-30
您好,nativePollOnce有三种情况会返回,出错,超时,或者有新消息来了。
重点是next第一次循环的超时是0,也就是不会阻塞,这时候如果发现没有消息,就会走IdleHandler。
132020-04-19 -
Stronger3594243
2020-11-25
说说我的理解:1.如果队列中没有消息,比如刚创建的时候,会先调IdleHandler的回调,然后进入阻塞;
2.如果next中遇到了一条延迟消息,也会先调IdleHandler的回调,然后进入阻塞;
阻塞总发生在下一次循环,当前循环如果有消息就处理消息,否则就设置阻塞时间。
00
相似问题