1. 程式人生 > >執行緒與更新UI,消除偏見,細談原理

執行緒與更新UI,消除偏見,細談原理

## 前言 相信不少讀者都閱讀過相類似的文章了,但是我還是想完整的把這之間的關係梳理清楚,細節聊好,希望你也能從中學到一些。 進入正題,大家應該都聽過這樣一句話——**“UI更新要在主執行緒,子執行緒更新UI會崩潰”**。久而久之就感覺這是個真理,甚至被認為是“官方結論”。 但是如果問你,官方什麼時候在哪裡說過這句話,你會不會有點懵。而且就算是官方說的,也就不一定對的是吧,眾所周知,`Google`官方文件一直都有點說的不清不楚,需要我們進行大量實踐得出實際的結論。 就好比之前的`Android11`更新文件,我也是看了好久,通過一個個實踐才寫出了適配指南,然後就發現其中一個比較明顯的`BUG`,`Google`官方有說過這樣一句: >下面是首先需要關注的行為變更 (無論您應用的 targetSdkVersion 是多少):  >外部儲存訪問許可權  - 應用無法再訪問外部儲存空間中其他應用的檔案。 其實經過實踐會發現,外部儲存訪問許可權還是會和`targetSdkVersion`有關,具體可以看這篇[Android11適配指南](https://juejin.im/post/6860370635664261128)。 廢話有點多了,今天還是通過實踐案例,看看這個關於執行緒和UI更新的 **“官方結論”** 正確嗎? ## 案例一,子執行緒更新button文字 1)`onCreate`方法中更新了按鈕顯示文字,修改`Button`的寬度為固定或者`wrap_content`,都不崩潰。 ```kotlin