android学习笔记之Activity生命周期详解

时间:2021-10-05 14:41:05

Activity生命周期详解:

每个Activity在其生命周期最多可能会有四种状态:

1.运行状态

2.暂停状态

3.停止状态

4.销毁状态

每个Activity的生命周期函数有7个:

1.onCreate:第一次创建Activity时调用,可以在此方法中执行一些正常的静态设置,包括创建视图、数据绑定到列表等等;

2.onStart:当Activity对用户可见时,会调用此方法;

3.onResume:当Activity要与用户交互时会调用此方法;

4.onPause:当系统准备去启动或者恢复另一个Activity的时候调用。我们通常会在这个方法中将一些消耗CPU的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用;

5.onRestart:当Activity由停止状态变为运行状态之前调用,也就是Activity被重新启动了。以上七个方法中除了onRestart()方法,其他都是两两相对的,从而又可以将Activity分为三种生存期;

6.onStop:当Activity完全不可见的时候调用。它和onPause()方法的主要区别在于,如果启动的新Activity是一个对话框式的Activity,那么onPause()方法会得到执行,而onStop()方法并不会执行;

7.onDestroy:当Activity被销毁之前调用,之后Activity的状态将变为销毁状态。

生命周期图:

android学习笔记之Activity生命周期详解


下面,我们将讨论上图中的7个函数在Activity的生命周期中的具体执行情况

1.当AActivity启动时,会调用onCreate,onStart,onResume三个函数,如图:

android学习笔记之Activity生命周期详解

2.当从AActivity跳转到BActivity时,生命周期函数的执行顺序如下图:

android学习笔记之Activity生命周期详解

首先是A执行pause方法,接着创建B活动,然后A活动调用onSaveInstanceState来保存临时数据,然后调用stop方法;当从B再次跳转A时,会发现A活动被再次创建了一次,如下图:

android学习笔记之Activity生命周期详解

这涉及到Activity的启动模式,这部分内容将会在另外一篇博客进行详细说明;

3.按后退键

android学习笔记之Activity生命周期详解

本次按后退键是从A活动退回到B活动,可以看出,到最后A活动被销毁了,所以说后退键是能够销毁一个Activity的;

4.按主菜单键返回

android学习笔记之Activity生命周期详解

按主菜单键返回,并不会销毁一个Activity,只会让Activity进入暂停状态,那么再次从任务列表中打开AActivity,执行情况如下图:

android学习笔记之Activity生命周期详解

5.跳转对话框主题样式的Activity

android学习笔记之Activity生命周期详解

此时原AActivity被一个对话框样式的BActivity遮盖住了,所以首先调用了onPause方法,紧接着BActivity启动

6.竖屏切横屏:

android学习笔记之Activity生命周期详解

7.横屏切竖屏:

android学习笔记之Activity生命周期详解

以上生命周期执行顺序测试是使用的Genymotion模拟器

还要特别说明一下:

1.android生命周期函数中的onPause方法,在弹出对话框时不会被调用,甚至其他的生命周期函数都不会被调用,由此可推出以下结论:

1)对话框的弹出不是通过启动一个新的Activity来实现的,对话框其实就是一个控件,是一个View;

2)onPause方法中说明的新窗体要求是一个新的Activity。


2.activity状态保存: 1)利用onSaveInstanceState()来保存activity的状态,可以用onCreate()和onRestoreInstanceState()两种方法来恢复,官方推荐使用onCreate()来恢复,因为onRestoreInstanceState()有时候不会被调用;
2)保存时如果要添加内容,则可以在onSaveInstanceState()中去屏蔽系统调用(注释掉super.onSaveInstanceState(outState)),或者在onRestoreInstanceState()中去恢复。