Android中為什么可以在非UI線程里更新UI組件?

說好的不能在非UI線程里更新UI組件呢?其實非UI線程是可以刷新UI的,前提是它要擁有自己的ViewRoot,ViewRoot是在onResume()里addview()創(chuàng)建的,所以是在 onResume()檢查是否為UI線程,一般在onCreate()中通過子線程可以更新UI,但是要保證更新ui的時間很短,因為activity的生命周期函數(shù)為onCreate()->onStart()->onResume(),所以在onResume中檢查是否為ui線程時,更新ui的操作已經(jīng)在onCreate中進(jìn)行了,但是若更新UI的過程時間太長的話,就會馬上被onResume檢查到,從而報錯。畢竟從onCreate到onResume的時間很短。但官方不建議這樣做,因為 Android UI操作并不是線程安全的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容