1.Activity任务栈:(就像弹夹,只能从一端进出)
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
注:当内存不足时,系统会回收栈底的activity。
2.Activity4种状态:
3.生命周期
(1)当启动activity时调用:onCreate--->onStart--->onResume;
(2)按home键时调用:onPause--->onSaveInstanceState--->onStop;
(3)按菜单键再调起来时调用:onRestart--->onStart--->onResume;
(4)按返回键时调用:onPause--->onStop--->onDestroy;
(5)按菜单键再调起来时调用:onCreate--->onStart--->onResume;
(6)调到另一个activity2时调用:onPause--->onSaveInstanceState--->onStop;
(7)按返回键再退回activity1时调用:onRestart--->onStart--->onResume;
4.activity异常情况下的生命周期:
onSaveInstanceState是系统自动调用的,我们可以在此方法中保存activity中的各种数据。
onRestoreInstenceState是系统自动调用的,当activity从异常情况恢复时就会被调用,而且里面的参数saveInstanceState可以用来做数据恢复。
onCreate方法中也有参数saveInstanceState,也可以做数据恢复来使用。
区别:onRestoreInstenceState的参数Bundle是不会为空的,但onCreate的参数Bundle可能为空,如果在这里面做数据恢复,需要进行Bundle的非空判断。所以,数据恢复建议在onRestoreInstenceState中操作,不用做非空判断。
对异常生命周期总结:https://www.jianshu.com/p/cc2c8acd8622