我有以下问题: 我的应用程序有一个更新游戏状态的线程。应用程序需要更改由此线程触发的View对象的状态。 View的文档指出它只应该从UI线程修改,并且应该使用Handler来放置和处理事件。
然而,View中有一个函数post(),我可以发布一个Runnable对象,该对象将在UI线程中执行而不涉及Handler。我不能从UI线程以外的线程调用此函数吗?
我很困惑!
答案 0 :(得分:2)
是的,您可以使用View.post()。在内部,它使用处理程序发布Runnable。
答案 1 :(得分:2)
如果要从后台线程在UI线程上运行一些任意代码,可以使用Activity的runOnUiThread():
runOnUiThread(new Runnable() {
@Override
public void run() {
}
});