為什麼必須在主線程中操作UI

2021-07-27 02:49:04 字數 272 閱讀 4433

因為uikit不是執行緒安全的。

如果不在主線程中操作ui,可能會造成如下的情況:

(1)兩個執行緒同時設定同乙個背景,那麼很有可能因為當前被釋放了兩次而導致應用崩潰。

(2)兩個執行緒同時設定同乙個uiview的背景顏色,那麼很有可能渲染顯示的是顏色a,而此時在uiview邏輯樹上的背景顏色屬性為b。

雖然,ios4之後蘋果將大部分繪圖的方法和諸如 uicolor 和 uifont 這樣的類改寫為了執行緒安全可用,但是仍然強烈建議講ui操作保證

在主線程中執行。

為什麼 Android 更新 UI 只能在主線程

ui訪問沒有加鎖,在多個執行緒訪問ui是不安全的。所以android中規定只能在ui執行緒中訪問ui。一些朋友說在 oncreate 中 可以 建立子執行緒操作 ui,不會程式崩潰 網上已有很多人分析過 主要是因為 1.錯誤是從 viewrootimpl.requestlayout viewroot...

子執行緒控制主線程中UI顯示

最近看了好多人問這方面的問題,以前我也寫過一篇 blog 裡面說了如何在子執行緒中控制進度條。但目前大多數環境,需要彈出模式視窗,來顯示進度條,那麼只需要在原先的基礎上稍作修改即可。首先是進度條窗體,需要在上面新增進度條,然後去掉 controlbox 除此外,還要增加乙個方法,用來控制進度條的增加...

WPF多執行緒訪問主線程中的ui控制項

wpf中的ui控制項只能由建立該ui的執行緒進行操作,但是經常有些複雜操作需要另起乙個執行緒來完成,而新的次執行緒計算的後又需要操作主線程的ui,可通過以下方法實現 第一步,定義委託 public delegate void delegate child 定義操作次執行緒的委託 public del...