2011-07-02 55 views
5

問題是:我應該只在UI線程中調用Activity.findViewById嗎?應該在UI線程中調用findviewbyid嗎?

我問的原因是,我從任意線程調用它,它的工作完美無瑕。 但後來我從其中一個用戶得到一個例外:findViewById失敗,NPEfindViewTraversal的某個地方。

那麼,它可能是原因嗎?

+1

如果用戶界面正在改變或被破壞,您的線程將會出現錯誤。你應該只使用UI線程這樣的UI函數 – Spidy

回答

5

Android UI工具包不是線程安全的,必須始終在UI線程上操作。

摘自Painless threading

因爲它不是線程安全的,你不知道如果你在另一個線程中使用API​​會發生什麼。它可能有效,可能無效,它可能在大多數情況下工作,可能永遠不會工作,或者可能工作並破壞其他事情。你不知道。

因此,如果你想要一個正確的應用程序,你必須在UI線程中做到這一點。

+0

謝謝,在UI線程中移動它似乎是正確的做法。 – Andy

相關問題