Activity 的 生命周期分析
activity 正常运行时
activity 从onCreate 开始启动 顺序执行 onCreate-onStart-onResume ,进入activity 开始运行程序。
在退出时 会先执行onPause-onStop activity退到后台,继续执行- onDestroy。 activity注销。
从后台回复到正常前台可交互界面时 会先经过onRestart-onStart-onResume。再次进入ancient开始运行程序 ,所以在onResume中可以写一些对程序运行有需要的判断(比如说在判断用户是否登录时可在此进行判断,来对下面的逻辑进行展开)
onStart 和 onResume的区别 onStart是activity开始运行已经到前台但是用户看不见,onResume后可以开始交互
onStop 和 onPause类似。同样是通过是否能看见的角度开调用的。
- activityA 跳转到activityB中的执行顺序是
activityA —onPause
activityB —onCreat
activityB —onStart
activityB —onResume
activityA —onStop
activityB会在A的onPause结束后才开始执行,所在onPause中最好不要做耗时操作。
activity 异常运行时
activity在系统运行内存不足后会杀死activity 或是activity在系统配置发生变化时杀死并重建activity
1.在手机横屏与竖屏之间切换时会发生系统配置图片等信息重置,这时activity会进入异常的生命周期,
会调用onSaveInstanceState方法 对当的状态信息进行保存,
在同过新建activity的onRestoreInstanceState方法来回复,
oldActivity — onSaveInstanceState
newActivity — onCreat
newActivity — onStart
newActivity — onRestoreInstanceState
newActivity — onResume
2资源管理不足内存不足会杀死activity (会通过优先级进行选择)
(1)前台Activity -正在交互 优先级最高
(2)可以看见不可以交互的
(3) 到后台 看不见的 优先级最低
3 同时我们可以通过改变configChanges的 值来使activity不再关闭重建
android:configChanges="orientation" //横屏竖屏转换是使用
keyboardHidden //键盘的可访问性发生变化,比如用户调出了键盘
locale // 设备的本地位置发生变化,一般指切换了系统语言