主要程序代碼如上,在這個程序中程序與結果如上圖截圖所示,在這個程序中并不像官方文檔中所示會拋出異常,那么這是什么原因呢?猜想:最大的可能是跟Activity的生命周期有關,當我們創建一個Activity調用onCreate方法時,UI并沒有執行onResume,也就是說UI沒有真正展示出來之前我們的新建線程中的方法就已經執行,所以就不存在“更新”問題。所以就不會報錯,程序是正常執行的。只有在onResume執行之后才存在跟新問題。ui線程與新線程之間執行是異步的。所以有時間差的問題。所以在這時候不用懷疑官方文檔是否出錯,假設我們在非主線程中更新ui但是耗時比較長就會出現拋出異常問題。佐證:在幕渴網老師在講解Handler這堂課程中出現拋出異常的問題,那么我們來看看跟我們上面寫的究竟有什么區別。直接上圖。幕課網老師多加了一條代碼,如圖所示,在onCreate方法中是得新線程睡眠了1s,別小看這一秒,這一秒足以使得主線程執行完onCreate方法,執行完onResume方法,而在此時線程運行起來是真正意義上的更新UI,所以拋出了異常。我寫著個希望跟大家一起探討這個問題。希望大家能頂起來
- 0 回答
- 0 關注
- 1490 瀏覽
添加回答
舉報
0/150
提交
取消