簡體   English   中英

從輔助線程處理UI

[英]Manipulating the UI from a worker thread

Andoid UI工具包不是線程安全的,當您嘗試從工作線程修改UI時,會收到CalledFrowWrongThreadException (或類似的東西)。

此外,開發指南說:

[從輔助線程操作UI]可能導致未定義和意外的行為,這可能很難且費時地進行跟蹤。

但是在我看來,不難理解CalledFrowWrongThreadException含義。

文檔是在引入CalledFrowWrongThreadException之前編寫的,還是在某些情況下未引發異常? (或其中,誤差是確實很難且耗時的追查)

就像Java中的Swing和.NET中的WinForms一樣,在某些情況下,所討論的方法不會檢查以確定您是從正確的線程進行調用的,因此不一定會引發預期的異常。

提供上述文檔的方式來掩護自己,並解釋說,實際上需要很多的努力來解決,如果你不知道,或者知道它, 之前錯誤的線程異常有史以來違規代碼拋出,這可能一個簡單的想法待在路上。

這里的主要問題是檢查哪個線程正在調用給定的函數會導致處理開銷。 幾乎可以肯定有一些呼叫由於這種原因而沒有進行檢查-這會減慢UI渲染的速度。

通過擴展,UI函數之所以不是線程安全的,是因為如果您將互斥量代碼放入等式中,則性能損失會更大。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM