Android:Activity.runOnUiThread和View.post有什么区别?

Activity.runOnUiThreadView.post什么区别, View.post有人能解释一下吗?

除了View.post在没有直接访问活动的情况下有帮助之外,并没有真正的区别。

在这两种情况下,如果不在UI线程上, Handler#post(Runnable)将在后台调用。

正如CommonsWare在评论中提到的,两者之间存在差异 – 当在Ui线程上调用时, Activity#runOnUiThread将直接调用run方法,而View#post将在队列上发布runnable (例如,调用Handler#post

国际海事组织的重要一点是两者都有相同的目标,无论谁使用它, 应该没有区别 (将来实施可能会改变)。

Activity.runOnUiThread和view.post()之间的另一个区别是view.post()中的runnable在视图附加到一个窗口之后被调用。

要么在大多数情况下都可以接受,大部分情况下它们是可以互换的,但是它们微妙的不同的。 当然,最大的区别在于,一个可以从一个Activity ,另一个从一个View 。 这些之间有很多重叠,但有时在一个Activity您将无法访问View ,有时在View您将无法访问一个Activity

我遇到View.post的边缘情况之一,我在View.post 另一个SO问题的答案中提到,只有当View连接到一个窗口时,才能从另一个线程 。 这很less是一个问题,但偶尔会导致Runnable永远不会执行,尤其是在您的ActivityonCreate方法中调用View.post时。 另一种方法是使用Handler.post ,这是Activity.runOnUiThreadView.post在封面下使用的方式。

(编辑的准确性,添加“从另一个线程”)