面试-Activity和Fragment最全生命周期

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

5 再次显示时(同4)
6退出时生命周期(正常退出同3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值