Android中非UI主線程能不能操作UI?

2021-10-22 12:56:12 字數 694 閱讀 5887

問題:「android只能在ui執行緒更新ui 麼?」

答:「對!......,嗯?不對?」

我腦子裡的的回答是「對」,但是辯證思維又在提醒我可能有陷阱,於是我就說「大部分情況是的」。那麼小部分情況呢?具體說不上來了!於是才發現這個問題一直被忽略了。

於是試驗檢驗真理,擼**驗證了一遍。

new thread()

}.start();

奔潰資訊:

問題出現在viewrootimpl.checkthread()的時候出錯

檢視viewrootimpl的原始碼,導致問題的原因:

public viewrootimpl(context context, display display) {

mcontext = context;

mwindowsession = windowmanagerglobal.getwindowsession();

mdisplay = display;

mbasepackagename = context.getbasepacka

Android 在子執行緒中更新主線程UI

最近發現以前在eclipse中使用的runonuithread在studio中不能使了,所以又找了幾個更新ui的方法 第一種方法 new handler context.getmainlooper post new runnable 第二種方法 如果當前執行緒是ui執行緒,那麼行動是立即執行。如果當...

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

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

更新UI放在主線程的原因

1 在子執行緒中是不能進行ui 更新的,而可以立刻更新的原因是 子執行緒 執行完畢了,又自動進入到了主線程,這中間的時間非常的短,讓我們誤以為子執行緒可以更新ui。如果子執行緒一直在執行,則無法更新ui,因為無法進入到主線程。2 程式一開始執行就進入了主線程。3 處理某些資料太過費時,影響使用者互動...