fragment中使用LiveData時,需要傳入一個owner參數(shù),若傳入fragment的this葱跋,會直接報錯伶椿,但是查看源碼可知,fragment是實現(xiàn)了LifecycleOwner接口瓤鼻。但是為什么編譯器爆紅呢?經(jīng)過查詢相關(guān)資料得知
1.png
以上為谷歌官方的說明,搞了半天是谷歌不讓用了深啤,推薦使用getViewLifecycleOwner()來獲取LifecycleOwner,點進去看源碼注釋
Snipaste_2022-08-11_15-08-58.png
翻譯一下就是路星,可以獲取一個與fragment視圖生命周期相關(guān)的lifecycle溯街,大多數(shù)情況下诱桂,這個lifecycler反映了fragment的生命周期,但是某些情況下fragment的生命周期比view本身的生命周期長很多呈昔。
我們使用LiveData的一個原因是挥等,livedata可以感知到生命周期變化,那這就顯而易見了堤尾,fragment本身實現(xiàn)的LifecycleOwner是與自己的生命周期相關(guān)的肝劲,但是view的生命周期實際是比fragment的短的。正常情況下郭宝,我們從livedata中拿到數(shù)據(jù)實際就是為了更新顯示到view上辞槐,所以應(yīng)該感知view的生命周期。(淺學(xué)一下粘室,若有誤榄檬,希望老鐵們指正)