今天看博客從源碼看invalidate和requestLayout的區(qū)別 忆谓,其中提及一點(diǎn):invalidate()向上查父ViewParent,最后會(huì)查詢到ViewRootImpl里面踱承。
雖然以前view繪制流程的時(shí)候弄明白過倡缠,不過忘記了,也沒有找到以前的筆記茎活,網(wǎng)上搜了兩下也沒有看到昙沦,只有按思路理一遍,ViewRootImpl 又沒有繼承View载荔,最后怎么可能會(huì)找到VireParent盾饮,理論上來說可以查到DecorView,它是View的子類身辨。
其向上查詢時(shí)使用函數(shù) invalidateChildInParent()丐谋,其返回的是ViewParent,而不是View煌珊。
而ViewRootImpl確實(shí)也實(shí)現(xiàn)了ViewParent接口号俐。但是還是要看它是怎么關(guān)聯(lián)起來的?
而ViewRootImpl 與DecorView 的關(guān)系:VIewRootImpl.setView(decorView)定庵。
那么必定是這個(gè)過程中產(chǎn)生了聯(lián)系吏饿,果然踪危,setView里面有以下代碼
view.assignParent(this);
就是給decorView指定ViewParent,也就是說猪落,decorView的ViewParent就是ViewRootImpl贞远。