問題是:我應該只在UI線程中調用Activity.findViewById
嗎?應該在UI線程中調用findviewbyid嗎?
我問的原因是,我從任意線程調用它,它的工作完美無瑕。 但後來我從其中一個用戶得到一個例外:findViewById
失敗,NPE
在findViewTraversal
的某個地方。
那麼,它可能是原因嗎?
問題是:我應該只在UI線程中調用Activity.findViewById
嗎?應該在UI線程中調用findviewbyid嗎?
我問的原因是,我從任意線程調用它,它的工作完美無瑕。 但後來我從其中一個用戶得到一個例外:findViewById
失敗,NPE
在findViewTraversal
的某個地方。
那麼,它可能是原因嗎?
Android UI工具包不是線程安全的,必須始終在UI線程上操作。
因爲它不是線程安全的,你不知道如果你在另一個線程中使用API會發生什麼。它可能有效,可能無效,它可能在大多數情況下工作,可能永遠不會工作,或者可能工作並破壞其他事情。你不知道。
因此,如果你想要一個正確的應用程序,你必須在UI線程中做到這一點。
謝謝,在UI線程中移動它似乎是正確的做法。 – Andy
如果用戶界面正在改變或被破壞,您的線程將會出現錯誤。你應該只使用UI線程這樣的UI函數 – Spidy