曾經有同僚問我切換Fragment的時候為啥不執行onResume這個方法,也沒辦法重新整理ui界面
@Override
public void onResume() {
super.onResume();
}
其實Fragment的切換重新整理ui要在onHiddenChange這個方法中
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged( hidden );
if (hidden) {// 不在最前端界面顯示
} else {// 重新顯示到最前端中
initDBView();
}
}
這個方法就是判斷Fragment可見與影藏的方法,如果Fragment建立commit後那麼會執行onResume方法,如果Fragment建立後隻是影藏了(hide),另一個Fragment用add方法, 然後再顯示那麼就會執行onHiddenChange這個方法,onResume是不執行的,onResume是和Activity有關系的。
Fragment的生命周期:
onAttach
當Fragment添加到Activity的時候調用,此方法隻會調用一次
onCreate
建立Fragment的時候調用
onCreateView
當建立Fragment關聯的View時候調用,并将此View關聯到Activity視圖樹種
onActivityCreate
當Fragment所關聯的Activity建立完畢,也就是onCreate執行完畢并return的時候執行
onstart
啟動Fragment的時候調用,Fragment可見
onResume
Fragment可見,并且可以擷取焦點
onPause
Fragment暫停,Fragment失去焦點
onStop
Fragment停止,Activity被停止或者Fragment入棧了
onDestroyView
銷毀Fragment關聯的View
onDestroy
銷毀Fragment
onDettach
當Fragment從Activity失去關聯,Fragment被銷毀、被替換等
Fragment生命周期執行順序:
當Fragment1被最初建立的時候
onAttach-->onAttachFragment(Activity中的方法)-->onCreate-->onCreateView-->onActivityCreate-->onStart-->onResume
當手機鎖屏了、回到桌面
onPause-->onStop
當手機打開螢幕
onStart-->onResume
當切換到Fragment2的時候Fragment1被Replace
onPause-->onStop-->onDestroyView
切換到Fragment1的時候
onCreteView-->onActivityCreate-->onStart-->onResume
如果Fragment1隻是hide話,Fragment2 用add方法, 會執行這個方法onHiddenChange
其它生命周期未見列印。
最後Fragment在事物空間操作後一定要commit!