Activity聲明周期
E/A—: onCreate
E/A—: onStart
E/A—: onResume
E/A—: onPause
E/A—: onStop
E/A—: onDestroy
A–B
E/A—: onCreate
E/A—: onStart
E/A—: onResume
跳轉B
E/A—: onPause
E/B—: onCreate
E/B—: onStart
E/B—: onResume
E/A—: onStop
傳回A
E/B—: onPause
E/A—: onRestart
E/A—: onStart
E/A—: onResume
E/B—: onStop
E/B—: onDestroy
橫豎屏切換
豎屏-橫屏
E/A—: onPause
E/A—: onStop
E/A—: onDestroy
E/A—: onCreate
E/A—: onStart
E/A—: onResume
橫屏–豎屏(同上)
解決方式:
1、設定橫豎屏(固定)
android:screenOrientation=“xxx”
landscape 橫屏
portrait 豎屏
2、設定不改變生命周期
android:configChanges=“keyboardHidden|orientation|screenSize”
監聽切換
@Override
public void onConfigurationChanged(Configuration newConfig) {
}
判斷 目前狀态
getResources().getConfiguration().orientation
Fragment 生命周期
Fragment建立對象并不會執行生命周期
使用FragmentManager時 :
Add生命周期:
開始
E/A—: onCreate
E/A—: onCreateView
E/A—: onViewCreated
E/A—: onActivityCreated
E/A—: onStart
E/A—: onResume
// 結束
E/A—: onPause
E/A—: onStop
E/A—: onDestroyView
E/A—: onDestroy
E/A—: onDetach
show和hide時 生命周期無變化
Replace方法切換時
E/B—: onCreate
E/A—: onPause
E/A—: onStop
E/A—: onDestroyView
E/A—: onDestroy
E/A—: onDetach
E/B—: onCreateView
E/B—: onViewCreated
E/B—: onActivityCreated
E/B—: onStart
E/B—: onResume
ViewPager + fragment
1) FragmentPagerAdapter和FragmentStatePagerAdapter
不同點: fragment 存儲、恢複、銷毀 的方式不同
2)顯隐監聽
setUserVisibleHint 生效
onHiddenChanged無效
FragmentPagerAdapter
1 初始化時生命周期
E/D—: onCreate
E/D—: onCreateView
E/D—: onViewCreated
E/D—: onActivityCreated
E/D—: onStart
E/D—: onResume
2 未銷毀時頁面切換不調用生命周期
3.1 銷毀時調用生命周期
E/A—: onPause
E/A—: onStop
E/A—: onDestroyView
3.2 銷毀再次建立(少一個onCreate)
E/A—: onCreateView
E/A—: onViewCreated
E/A—: onActivityCreated
E/A—: onStart
E/A—: onResume
4 新建立并銷毀一個
E/D—: onCreate
E/A—: onPause
E/A—: onStop
E/A—: onDestroyView
E/D—: onCreateView
E/D—: onViewCreated
E/D—: onActivityCreated
E/D—: onStart
E/D—: onResume
5 再次顯示時
E/A—: onCreateView
E/A—: onViewCreated
E/A—: onActivityCreated
E/D—: onPause
E/D—: onStop
E/D—: onDestroyView
E/A—: onStart
E/A—: onResume
6退出時生命周期
E/C—: onPause
E/C—: onStop
E/C—: onDestroyView
E/C—: onDestroy
E/C—: onDetach
FragmentStatePagerAdapter
1 初始化時正常周期(同上)
2 未銷毀時頁面切換不調用生命周期
3 銷毀時調用生命周期
E/A—: onPause
E/A—: onStop
E/A—: onDestroyView
E/A—: onDestroy
E/A—: onDetach
4 新建立并銷毀一個
E/D—: onCreate
E/A—: onPause
E/A—: onStop
E/A—: onDestroyView
E/A—: onDestroy
E/A—: onDetach
E/D—: onCreateView
E/D—: onViewCreated
E/D—: onActivityCreated
E/D—: onStart
E/D—: onResume