问题是:我应该只在UI线程中调用Activity.findViewById
吗?
我问的原因是我从任意线程调用它并且它完美无缺。
但后来我从其中一个用户那里得到了一个例外:findViewById
在NPE
的某个位置findViewTraversal
失败。
那么,这可能是原因吗?
答案 0 :(得分:5)
Android UI工具包不是线程安全的,必须始终在UI线程上进行操作。
因为它不是线程安全的,所以如果在另一个线程中使用API,则不知道会发生什么。它可能有效,它可能不起作用,它可能在大多数时间工作,可能永远不会工作或它可能工作并打破其他事情。你不能说。
因此,如果您需要正确的应用程序,则必须在UI线程中执行此操作。