应该在UI线程中调用findviewbyid吗?

时间:2011-07-02 10:54:36

标签: java android

问题是:我应该只在UI线程中调用Activity.findViewById吗?

我问的原因是我从任意线程调用它并且它完美无缺。 但后来我从其中一个用户那里得到了一个例外:findViewByIdNPE的某个位置findViewTraversal失败。

那么,这可能是原因吗?

1 个答案:

答案 0 :(得分:5)

  

Android UI工具包不是线程安全的,必须始终在UI线程上进行操作。

取自Painless threading

因为它不是线程安全的,所以如果在另一个线程中使用API​​,则不知道会发生什么。它可能有效,它可能不起作用,它可能在大多数时间工作,可能永远不会工作或它可能工作并打破其他事情。你不能说。

因此,如果您需要正确的应用程序,则必须在UI线程中执行此操作。