Fragment生命周期:
1.onAttach(Activity):一旦和他所植入的Acitivty結(jié)合的時候回調(diào)鸟雏;
2.onCreate(Bundle):創(chuàng)建初始化操作的時候回調(diào)览祖;
3.onCreateView(LayoutInflater, ViewGroup, Bundle):創(chuàng)建并返回與片段有關(guān)的視圖層次結(jié)構(gòu);
4.onActivityCreated(Bundle):告訴Fragment他的Activity完成了自己的onCreate()操作又活;
5.onStart():使這個Fragment顯示出來锰悼,要基于他所植入的Activity已經(jīng)啟動了;
6.onResume():使這個Fragment可以與用戶交互耐薯,要基于他所植入的Activity已經(jīng)在運行狀態(tài)了丝里;
7.onPause():這個Fragment不再與用戶交互,可能因為是所植入的Activity被paused了杯聚,也可能是在所植入的Activity中有一個操作正在修改他;
8.onStop():這個Fragment不再顯示出來颁褂,可能因為是所植入的Activity被stoped了傀广,也可能是在所植入的Activity中有一個操作正在修改他;
9.onDestroyView():允許這個Fragment清理他所占有的視圖資源主儡;
10.onDestroy():執(zhí)行Fragment的最終清理階段;
11.onDetach():立刻與所植入的Activity斷開連接丰捷;
除了onActivityCreated以外,其余生命周期方法都是一一對應(yīng)的病往。
Fragment的add與replace的區(qū)別
用add方式實現(xiàn)fragment的效果就是:切換fragment時不會重新創(chuàng)建停巷;用replace的效果就是:切換fragment時每次都會重新創(chuàng)建初始化。
通常fragment切換處理方式都是判斷沒有調(diào)用add畔勤,然后用show和hide進(jìn)行切換。
getFragmentManager式曲、getSupportFragmentManager缸榛、getChildFragmentManager理解
FragmentManager的作用是用于管理stack中的framgent。
getFragmentManager内颗、getSupportFragmentManager其實獲取的都是Activity里面的Fragment的管理器。getFragmentManager是Activtiy的方法
而getSupportFragmentManager是FragmentActivity的方法恨溜。
Fragment中也有FragmentManager负懦,獲取的是這個Fragment的管理器。
getChildFragmentManager是Fragment中的方法纸厉,是在fragment嵌套fragment的第二層fragment調(diào)用的方法颗品。
FragmentPagerAdapter與FragmentStatePagerAdapter的區(qū)別
FragmentPagerAdapter:保存所有加入的fragment,雖然步長超過1的頁面會調(diào)用destroyItem躯枢,但是在fragment的生命周期里,只有onDestroyView調(diào)用了氓仲,沒有調(diào)用onDestory,也沒有調(diào)用onDetach敬扛,所以fragment只是把上面的view銷毀了,fragment并沒有銷毀谍珊。
FragmentStatePagerAdapter:對步長以內(nèi)的fragment急侥,跟FragmentPagerAdapter一樣,不會調(diào)用任何銷毀操作坏怪,再次顯示也無需重新創(chuàng)建,對步長以外的fragment會調(diào)用destroyItem题暖,跟FragmentPagerAdapter不一樣捉超,會真正銷毀fragment唯绍。適用于頁面比較多的情況,這樣才不會耗費過多的內(nèi)存惜纸。