Fragment 回退棧問題
今天在修改之前項(xiàng)目的時(shí)候有個(gè)fragmenta里可以點(diǎn)擊切換到到另一個(gè)fragmentb中塞关,然后從這個(gè)fragmentb里點(diǎn)擊返回到fragmenta中的時(shí)候要去刷新數(shù)據(jù)。?
然后在點(diǎn)擊返回的時(shí)候遇到了問題潘鲫,從fragmentb返回到fragmenta的時(shí)候不知道為什么就是進(jìn)不到fragmenta的生命周期方法中,任何一個(gè)生命周期都進(jìn)不去W┣辍v旯埂8餮琛(這就讓人很郁悶了)。
理論上來說在切換fragment的時(shí)候?fragmenta 會(huì)進(jìn)入?fragmenta?onStop()和?onDestroyView()方法然后進(jìn)入fragmentb 這時(shí)點(diǎn)擊返回頁面b進(jìn)入onStop(),onDestroyView()方法签夭。此時(shí)回到頁面a 然后依次進(jìn)入onCreateView()齐邦,onStart(),onResume()第租,但是現(xiàn)在一個(gè)方法都沒有進(jìn)去措拇。
在網(wǎng)上的搜索了一些資料驗(yàn)證了點(diǎn)擊返回生命周期的回調(diào)應(yīng)該是像上邊說的這樣,然后將兩個(gè)fragment的每個(gè)生命周期打印了log慎宾,然后在操作了一下兩個(gè)頁面見的返回丐吓。查看頁面切換時(shí)的生命周期發(fā)現(xiàn)了問題,在從頁面a切換到頁面b的時(shí)候并沒有調(diào)用頁面a的onDestroyView()方法趟据,然而從頁面b返回到a頁面的時(shí)候生命周期是正常的(進(jìn)入 onStop ()券犁,onDestroyView())⌒诩睿看到log日志后想到問題可能出在頁面a上邊粘衬,然后檢查了一下頁面a的布局,發(fā)現(xiàn)頁面a和頁面b不是放在同一個(gè)父控件上邊顯示的比被。然后將代碼做了修改把兩個(gè)頁面放到了同一個(gè)父控件里做顯示色难,運(yùn)行查看生命周期已經(jīng)正常了。
PS:不知道之前的同事將頁面放到兩個(gè)父控件中做顯示是不是出于每次頁面返回的時(shí)候進(jìn)入生命周期從新加載視圖請(qǐng)求數(shù)據(jù)對(duì)頁面性能上有消耗的原因等缀。