本节书摘来自异步社区《Android 开发入门与实战(第二版)》一书中的第6章,第6.2节Activity的生命周期,作者eoe移动开发者社区 组编 , 姚尚朗 , 靳岩,更多章节内容可以访问云栖社区“异步社区”公众号查看
6.2 Activity的生命周期
Android 开发入门与实战(第二版)
Activity的重要性在Activity介绍中已经大概描述了,为了更好地使用Activity,接下来我们介绍一下Activity的生命周期。
在讲Activity生命周期之前,我们先看图6-1(Activity的生命周期)。
从图6-1中我们可以看到Activity的生命周期其实就是由以下函数组成的。
public class Activity extends ApplicationContext{
protected void onCreate(Bundle savedInstanceState);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
}
通常情况下Activity生命周期的动作如下所示。
onCreate():该方法是在Activity第一次被创建的时候调用的。这个方法通常用来做一些常规的设置,比如创建视图,绑定数据到list等。这个方法还提供了一个Bundle对象来保存先前冻结的状态,当然,前提是你之前已经将你需要冻结的内容放到了Bundle中。之后总是会调用onStart()方法,并且在调用了这个方法之后,是不能被系统意外杀死的。
onRestart():从名字就能看出,在Activity被停止后,如果需要重新启动,则会调用这个方法,之后会调用onStart()方法。
onStart():该方法在Activity将要对用户可见时调用,如果Activity将显示在前台,接着调用onResume(),如果Activity将变隐藏,则调用onStop()方法。不能被系统意外杀死。
onResume():该方法是在Activity将开始于用户交互时被调用的,这个时候的Activity在Activity栈中处于最顶部,之后总是调用onPause()方法。也不能被系统意外杀死。
onPause():该方法是在系统准备恢复其他Activity时调用,这个方法通常用来提交未保存变化的持久化数据,停止动画和其他可能消耗CPU的操作等。由于在这个方法返回之前,下一个Activity是无法被恢复的,所以这个方法的实现不宜做耗时的操作。如果调用了该方法之后,Activity又打算重新返回到前台,则会调用onResume()方法,如果Activity变得对用户不可见,则调用onStop()方法。在系统极端低内存的情况下可以被杀死。
onStop():该方法在Activity不再对用户可见时调用,因为其他Activity已经恢复并且正在覆盖当前Activity。这个可能发生在当一个新的Activity正在启动,而已经存在的Activity又被带到了这个Activity的前面,或者这个Activity正在被销毁。调用了这个方法后,可能会被系统意外地杀死。
onDestory():该方法是在Activity被销毁之前最后调用的一个方法,这个可能发生在Activity被完成的时候。
上述提到的可能被系统意外杀死或者不能被杀死,是指Android系统在运行时,会在内存极端低下的情况下有选择性地杀死某些“不必要”进程以达到缓解内存不足的情况。