- 使用方法
queueIdle返回值,true表明还会继续使用,false表示不再继续使用,执行完移除。
override fun onResume() {
super.onResume()
Looper.myQueue().addIdleHandler(MyIdleHandler())
Looper.myQueue().addIdleHandler(MyOnceIdleHandler())
}
class MyIdleHandler:MessageQueue.IdleHandler{
override fun queueIdle(): Boolean {
Log.d("chao","MyIdleHandler always")
return true//继续执行,不移除
}
}
class MyOnceIdleHandler :MessageQueue.IdleHandler{
override fun queueIdle(): Boolean {
Log.d("chao","MyIdleHandler once")
return false//运行完移除
}
}
-
意思
IdleHandler意思是在MainLooper的MessageQueue中消息为空的时候,才会执行 -
应用
可以优化页面执行速度,在不是特别重要的功能,在queueIdle中执行。ui全部才绘制完成后才执行queueIdle方法 -
onResume之后会执行addView操作,因此onResume执行耗时操作会降低页面打开速度。addView,即绘制页面UI。
网友评论