我正在从我在同一活动中注册的BroadcastReceiver更新活动的UI。 API文档说:
[...]函数[onReceive()]通常在主线程中调用 其过程[...]
所以我想更新UI是可以的。
文档也说:
[...]你永远不应该在其中进行长时间运行(有 超时10秒[...]
我只是在TextView上设置一些文字,所以我想这不会超过10秒。
但是,最后我的实际问题是:使用Handler将Runnable添加到主线程的消息队列是否有任何意义,以便onReceive()可以立即返回,并且UI更新在稍后发生时间点,正如文档建议的那样:
Handler有两个主要用途:(1)安排消息和 runnables将在未来的某个点上执行; [...]
答案 0 :(得分:1)
是的,使用Handler
来安排Runnable
是标准。
答案 1 :(得分:1)
如果你只是在TextView
上设置文字,那么你就不会有问题。无需使用Handler
s过度复杂化。
虽然我会说有些人喜欢使用处理程序,因为如果需要调用多个特定UI方法的调用,它会保持组织。使用处理程序将保证执行的代码最初将放在UI线程上,因此它可以避免检查您正在运行的线程。
要记住的重要一点是,所有UI操作都应该在UI线程上执行,任何类型的密集处理都应该在后台线程上完成。