生命周期
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