四中状态
运行状态,处于当前栈顶,可见的,活跃状态。
暂停状态:一般是正在打开下个activity的动画过程,或者是本半遮蔽状态。不在栈顶,也是活跃状态。
停止状态:不可见,不在栈顶,页面状态,以及成员变量等会被保存,除非被强制回收。
销毁状态:从栈中弹出,系统优先回收这种activity。但是如果被其他存活的线程或者对象持有,可能就会无法回收,造成内存泄露。所有activity被持有时一定要在正确的时机释放。
生命周期
启动模式
standard:默认启动模式,每次都创建一个新activity
singleTask:当前栈中最多只能有一个实例,如果栈内有目标activity,就会将这个activity上面所有的activity弹出
singleTop:当钱栈顶只能有一个实例。栈顶不能有两个目标activity。如果栈顶有目标activity,就不会再重新创建一个activity
singleInstance:会重新创建一个回退栈,创建目标activity。并且只会存在唯一一个实例。
状态保存
·当手机内存不足的时候,Android系统是有可能回收 stop 和 pause状态的activity的。这个时候就需要在onSaveInstanceState方法中保留页面的属性数据。当返回栈从新切到当前activity的时候就会从新创建,就可以从onCreate方法或者onRestoreInstanceState中的bundle中拿到保存的数据,并恢复到页面上。
注意:onSaveInstanceState 和 onRestoreInstanceState 只有在页面发生异常的时候会被调用。例如 页面回收或者横竖屏幕切换。