gpt4 book ai didi

android - 通过处理程序的无限循环会阻塞 UI 线程吗?

转载 作者:行者123 更新时间:2023-11-30 02:52:57 25 4
gpt4 key购买 nike

我想使用以下代码在我的 android 游戏中实现一个计时器。此代码每秒运行特定代码。

final Handler handler = new Handler(); 
Runnable runable = new Runnable() {

@Override
public void run() {
try{
//task to be done
handler.postDelayed(this, 1000);
}
catch (Exception e) {
// TODO: handle exception
}
finally{
//task to be done
handler.postDelayed(this, 1000);
}
}
};
handler.postDelayed(runable, 1000);

处理程序是在 UI 线程中创建的。这样的无限循环会阻塞线程吗?如果不是,为什么不呢?

最佳答案

没有循环,控制返回到处理消息队列的 UI 线程循环器。它不会阻塞 UI 线程。

但是,您正在以其他方式阻塞 UI 线程。 runnable 的每次调用都会重新发布自己两次:一次在 try 中,第二次在 finally 中,因此每秒有效地使消息队列中的事件数量加倍。最终,UI 线程将无法执行处理其他事件的任何有用工作。

关于android - 通过处理程序的无限循环会阻塞 UI 线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23824129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com