1.1 IdleHandler 基本情况
IdleHandler 可以用来提升性能,主要用在我们希望能够在当前线程 消息队列空闲时 做些事情(例如UI线程在显示完成后,如果线程空闲我们就可以提前准备其他内容)的情况下,不过最好不要做耗时操作。
IdleHandler
位于 MessageQueue
类中的一个静态接口,如下:
1 | MessageQueue#IdleHandler |
1.2 使用场景
1 | Looper.myQueue().addIdleHandler(new MessageQueue.IdleHandler() { |
我记得之前我们想要获取xml中某个控件的
width
和height
时,在onCreate
方法中直接获取,会获取到是 0 , 因为这个view
还未绘制完成,所以获取不到,当时的解决方案我记得是使用Handler
发送一个延时消息获取,现在有更好的方式实现了,那就是通过IdleHandler
, 如上面代码所示。 当然还可以做一些其它预处理的简单操作。