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