生命周期估计大家都耳熟能详,这次写的这个也是对自己基础知识的复习
一般来说每个活动(Activity)在其生命周期有可能会经历至多四种状态
- 运行状态:处于栈顶时,就是运行状态
- 暂停状态:不在栈顶时,但可见,处于暂停状态,例如对话框的弹出
- 停止状态:不在栈顶并且完全不可见,则处于停止状态,例如通过意图(Intent)从活动A跳转到活动B,此时A处于停止状态,但是仍然存活
- 销毁状态:当从栈顶移除之后,则活动销毁,常见如通过调用活动的 finish() 函数销毁
然后就是上述状态对应的老生常谈活动生命周期的七个回调方法
- onCreate() :活动第一次创建时被调用
- onStart():活动由不可见到可见时候调用
- onResume():此时活动位于栈顶且处于运行时被调用
- onPause():准备启动或恢复另一个活动的时候调用
- onStop() :活动完全不可见的时候调用
- onDestory():活动被销毁之前调用
- onRestart(): 活动由停止变为运行状态之前被调用
然后一般情况下:
-
当一个活动第一创建的流程:onCreate() - onStart() -onResume()
-
当按home键进入后台的流程:onPause() - onStop
-
从后台返回,或者从其它应用切回来:
onRestart() - onStart() - onResume() -
屏幕旋转时:onPause() - onStop() -onDestory() - onCreat() -onResume()
基础知识就到这里了,现在谈谈我遇到过的那些坑:
场景:项目中的某个游戏横屏玩耍中,假设突然来电,打完切回去发现又重启又或者在跳转界面时从新界面回退到旧的界面,但是旧界面却还是调用了onCreate(),多次初始化导致卡顿,frament多次加载导致OOM
发生的可能性原因:
资源配置发生变化导致的活动销毁重建,Activity在切换到后台或布局从横屏LANDSCAPE切换到PORTRAIT,可以通过Androidmanifest里Activity配置中android:configChanges属性来回避这样的事情发生
网友评论