Android中子線(xiàn)程真的不能更新UI嗎差牛?
參考: https://www.cnblogs.com/xuyinhuan/p/5930287.html
舉例:,在onCreate方法中創(chuàng)建了一個(gè)子線(xiàn)程堰乔,并進(jìn)行UI訪(fǎng)問(wèn)操作偏化,譬如對(duì)textView進(jìn)行操作,發(fā)現(xiàn)是沒(méi)有問(wèn)題的镐侯,并沒(méi)有報(bào)錯(cuò)侦讨,但是如果你休眠了2000毫秒,那么此時(shí)就會(huì)報(bào)錯(cuò):只有創(chuàng)建這個(gè)view的原始線(xiàn)程才能操作這個(gè)view苟翻;也就是ui線(xiàn)程才能修改ui韵卤;
為什么第一次沒(méi)有問(wèn)題?
???? ViewRootImpl的創(chuàng)建在onResume方法回調(diào)之后袜瞬,而我們一開(kāi)篇是在onCreate方法中創(chuàng)建了子線(xiàn)程并訪(fǎng)問(wèn)UI怜俐,在那個(gè)時(shí)刻,ViewRootImpl是沒(méi)有創(chuàng)建的邓尤,無(wú)法檢測(cè)當(dāng)前線(xiàn)程是否是UI線(xiàn)程拍鲤,所以程序沒(méi)有崩潰一樣能跑起來(lái)贴谎,而之后修改了程序,讓線(xiàn)程休眠了200毫秒后季稳,程序就崩了擅这。很明顯200毫秒后ViewRootImpl已經(jīng)創(chuàng)建了,可以執(zhí)行checkThread方法檢查當(dāng)前線(xiàn)程景鼠。