Android基础——Activity的生命周期
该文章为郭霖所著《第一行代码》第三版中第三章第四节内容的高度概括
android是使用任务(task)来管理Activity的,一个任务就是一组存放在栈里的Activity集合,这个栈也被称作返回栈(back stack)。
Activity状态
每个Activity在其生命周期最多可能有四种状态
1.运行转态
当一个Activity位于返回栈的栈顶位置,Activity就处于运行状态。(十分可靠,系统最不愿意收回的
2.暂停状态
当一个Activity不在栈顶位置,但仍然可见时,Activity就进入了暂停状态(比较可靠,只有在内存极低的情况下,系统才会考虑回收
3.停止状态
当一个Activity不再处于栈顶位置,并且处于完全不可见的时候,就进入了停止状态(不太可靠的,当其他地方需要内存时,就有可能被收回
4.销毁状态
一个Activity从返回栈中移除后就变成了销毁状态。(系统最倾向回收这种Activity,以保证系统内存充足
Activity的生存周期
Activty类中定义了7个回调方法,覆盖了Activity的生命周期的每一个环节。
onCreate(){
}
/* 在Activity第一次被调用的时候调用。在此方法中进行Activity的初始化操作,比如加载布局、绑定事件等 */
onStart(){
}
/* 这个方法在Activity由不可见变为可见的时候调用。 */
onResume(){
}
/* 这个方法在Activity准备好和用户进行交互的时候调用,此时该Activity一定位于栈顶,并且处于运行状态。 */
onPause(){
}
/* 这个方法在系统准备去启动或者恢复另一个Activity的时候调用。我们会在这个方法中将一个消耗CPU的资源释放掉。 */
onStop(){
}
/* 这个方法在Activity完全不可见的时候调用。与onPause的区别在于,一个不可见一个可见 */
onDestory(){
}
/* 这个方法在Activity销毁之间调用 */
onRestart(){
}
/* 这个方法由停止状态变为运行状态之前调用,也就是Activity被重新启动了 */
Activity被回收了怎么办
问题:
当一个Activity处于停止状态是有可能被系统回收的,当返回该Activity时调用的是onCreate方法而不是onRestart方法,这种情况就是重新创建了该Activity,这就会导致原本存在Activity的数据丢失。
解决:
Activity中提供了一个onSaveInstanceState()的回调方法,这个方法保证在Activity在回收之前一定会被调用,因此我们可以通过这个方法来解决问题
本文来自博客园,作者:maplerain,转载请注明原文链接:https://www.cnblogs.com/maplerain/p/16255488.html 博主B站