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