Android子線程為什么可以setText的真正原因

首先我們看下TextView的源碼,如下圖所示:

image.png

TextView的源碼中可以找到在執(zhí)行setText()方法時一定會執(zhí)行requestLayout()invalidate()方法旅掂,而在requestLayout()中代碼如下圖所示:
image.png

ViewRootImpl viewRoot = getViewRootImpl();獲取的ViewRootImpl類是ViewParent接口的實現(xiàn)類
image.png

ViewParent接口中有requestLayout()方法需要實現(xiàn),如下圖所示:
image.png

這時后再看圖二中紅框標(biāo)注的mParent.requestLayout()就會發(fā)現(xiàn)mParent其實就是一個viewParent接口具體實現(xiàn)類的對象也就是ViewRootImpl
image.png

再看ViewRootImplrequestLayout()的具體實現(xiàn)如下圖所示:
image.png

想必到了這里大家看到checkThread()就已經(jīng)猜到了子線程不能更新ui的異常是怎么拋出的,還是看下具體的代碼:
image.png

到了這里大家就會有疑問了,那為什么子線程setText()沒有異常呢酣衷,那是因為如果你圖一中的 invalidate()方法是線程第一行代碼執(zhí)行而requestLayout()檢查線程是個耗時操作,invalidate()方法快于requestLayout()檢查到線程異常就不會報錯次泽。出自古龍小李飛刀的天下武功穿仪,唯快不破!放在代碼中同樣適用意荤,想要驗證這個結(jié)論你可以在setText()之前Thread.sleep(1000) 讓線程休眠1s試一下啊片,你就會發(fā)現(xiàn)本來正常的代碼突然拋出異常了!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玖像,一起剝皮案震驚了整個濱河市紫谷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捐寥,老刑警劉巖笤昨,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異握恳,居然都是意外死亡瞒窒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門乡洼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來崇裁,“玉大人匕坯,你說我怎么就攤上這事“挝龋” “怎么了葛峻?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長壳炎。 經(jīng)常有香客問我泞歉,道長,這世上最難降的妖魔是什么匿辩? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮榛丢,結(jié)果婚禮上铲球,老公的妹妹穿的比我還像新娘。我一直安慰自己晰赞,他們只是感情好稼病,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著掖鱼,像睡著了一般然走。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上戏挡,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天芍瑞,我揣著相機與錄音,去河邊找鬼褐墅。 笑死拆檬,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的妥凳。 我是一名探鬼主播竟贯,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼逝钥!你這毒婦竟也來了屑那?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤艘款,失蹤者是張志新(化名)和其女友劉穎持际,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體磷箕,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡选酗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了岳枷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芒填。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡呜叫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出殿衰,到底是詐尸還是另有隱情朱庆,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布闷祥,位于F島的核電站娱颊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏凯砍。R本人自食惡果不足惜箱硕,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望悟衩。 院中可真熱鬧剧罩,春花似錦、人聲如沸座泳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挑势。三九已至镇防,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間潮饱,已是汗流浹背来氧。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留饼齿,地道東北人饲漾。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像缕溉,于是被迫代替她去往敵國和親考传。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

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