任何人都可以看到任何原因无法正常工作吗?
override fun resetAnimations() {
Log.d("MainActivity", "start")
Handler().postDelayed( { reset()}, 1500)
Log.d("MainActivity", "end")
}
fun reset(){
Log.d("MainActivity", "reset")
}
我在活动中的某个任意位置将其称为" reset()方法"。在日志中,我只得到以下
D/MainActivity: start
它看起来像是在邮政邮局上的阻塞。即使我将值设置为1或用姿势替换邮政postdelay也行不通。
更新:
当我这样实施时,它可以工作;
private lateinit var handler : Handler
override fun onCreate(savedInstanceState: Bundle?) {
handler = Handler()
resetAnimations()
}
override fun resetAnimations() {
handler.postDelayed( { reset()}, 1500)
}
我认为这个问题与我从背景线程调用resetanimations()并在背景线程上创建处理程序有关的事实。
我是从背景线程调用
resetAnimations()
的。
这就是问题所在。您的处理程序无法将Message
发布到MessageQueue
上,因为您的背景线程没有任何MessageQueue
。
所以,而不是这样:
Handler().postDelayed( { reset()}, 1500)
执行此操作:
Handler(Looper.getMainThread()).postDelayed( { reset()}, 1500)