android延迟执行优化 安卓开机自启动管理( 二 )

其实,从这里就可以看出来,Handler 的延时消息是如何实现的了 。
比方说 发送一个延时10s的消息,那么在 next()方法是,会阻塞 (10s + 发送消息时的系统开机时间 – 执行next()方法是系统的开机时间),到达阻塞时间时会唤醒 。或者这时候有新的消息来了也会 根据 mBlocked = true来唤醒 。
IdleHandler是什么?在 MessageQueue 类中有一个 static 的接口 IdleHanlder:
public static interface IdleHandler {boolean queueIdle();}当MessageQueue中无可处理的Message时回调; 作用:UI线程处理完所有事务后,回调一些额外的操作,且不会堵塞主进程;
【android延迟执行优化 安卓开机自启动管理】接口中只有一个 queueIdle() 函数,线程进入堵塞时执行的额外操作可以写这里,返回值是true的话,执行完此方法后还会保留这个IdleHandler,否则删除 。

推荐阅读