首页 理论教育 如何检验Activity的生命周期?

如何检验Activity的生命周期?

时间:2023-06-27 理论教育 版权反馈
【摘要】:下面通过实例更加直观地体验Activity的生命周期。图4-4Activity的生命周期程序界面图4-5Activity启动时的日志图4-6Normal Activity界面图4-7Activity完全被遮挡时的日志接下来,点击返回按钮,返回MainActivity界面,打印日志如图4-8所示。图4-9Activity的生命周期程序界面图4-10DialogActivity界面然后查看打印日志信息,如图4-11所示。R4-2DialogActivity实例程序演示到这里,读者应该对Activity的生命周期的整个过程有了更加直观、更加深刻的理解。

如何检验Activity的生命周期?

下面通过实例更加直观地体验Activity的生命周期。

首先,打开Eclipse,关闭所有已打开的项目,新建一个名为“ActivityLifeDemo”的项目。新建项目的过程这里不再赘述,创建过程中的所有命名均使用默认值即可。现在创建第二个Activity,命名为“SecondActivity”,同时新建“second_layout.xml”文件,代码如下:

这个布局非常简单,只放置一个TextView控件,用于显示一行文字。控件的用法会在后面章节详细介绍。

然后新建一个SecondActivity继承自Activity,具体代码如下:

这个Activity是一个普通的Activity,跟之前示例里的是一样的,在“AndroidManifest.xml” 文件中添加如下代码进行注册:

接下来修改“activity_main.xml”文件,主Activity的布局仍然使用LinearLayout,然后添加一个按钮控件,用于启动SecondActivity。具体代码如下:

最后修改MainActivity中的代码,具体如下:

在onCreate()方法中,为按钮添加了点击事件用来启动SecondActivity,然后在Activity的每个回调方法中添加了日志,这样可以方便通过打印出来的日志信息更加直观地理解Activity的生命周期。

运行程序后的效果如图4-4所示。

这时,打开Logcat观察打印出来的日志,如图4-5所示。

可以看到,当Activity第一次启动的时候,会依次调用onCreate()、onStart()和onResume()方法。接下来,点击“Start Normal Activity”按钮,如图4-6所示。

此时的打印信息如图4-7所示。

此时的MainActivity被SecondActivity完全遮挡,对于用户是完全不可见的,因此此时MainActivity的onPause()和onStop()方法会依次执行。

图4-4 Activity的生命周期程序界面

图4-5 Activity启动时的日志

图4-6 Normal Activity界面

图4-7 Activity完全被遮挡时的日志

接下来,点击返回按钮,返回MainActivity界面,打印日志如图4-8所示。

图4-8 重回MainActivity界面时的打印日志

可以看到,当MainActivity重新回到屏幕最前端时,onRestart()方法首先被调用,随后依次调用onStart()和onResume()方法。为什么onCreate()方法并没有执行?因为MainActivity并没有被重新创建,因此此时onCreate()方法并不会执行。

(www.xing528.com)

R4-1 Normal Activity实例

接下来新建一个子Activity,命名为“DialogActivity”,用同样的方法新建一个“dialog_layout.xml”文件,代码如下:

然后新建一个DialogActivity继承自Activity,然后加载dialog_layout布局,具体代码如下:

从这个Activity的命名来看,这是一个对话框式的Activity,但是可以发现到目前为止所有代码跟SecondActivity的代码几乎是一样的,那么需要在哪里添加代码才能将这个Activity设置成对话框式的呢?打开“AndroidManifest.xml”文件,在SecondActivity的<activity>标签下添加代码,具体如下:

这样就对DialogActivity进行了注册,其跟之前注册Activity的区别在于,这里给DialogActivity添加了Activity主题,也就是android:theme属性,并且把@android:style/Theme.Dialog这个系统内置的对话框式的主题赋值给了这个属性,通过这个属性值,就可以使DialogActivity显示为一个对话框式的Activity。

接下来,需要对主Activity的布局“activity_main.xml”文件进行修改,在原基础上添加一个按钮,代码如下:

同样,最后需要修改MainActivity中的代码如下:

同样,为“Start Dialog Activity”按钮添加点击事件,以便于点击后启动DialogActivity。程序运行,效果如图4-9所示。

此时查看程序的打印信息,应该可以看到和图4-5一样,Activity在启动时依次回调了onCreate()、onStart()和onResume()方法。点击 “Start Dialog Activity”按钮,启动DialogActivity,如图4-10所示。

图4-9 Activity的生命周期程序界面

图4-10 DialogActivity界面

然后查看打印日志信息,如图4-11所示。

图4-11 Activity部分被遮挡时的日志

此时只有onPause()方法被调用,而不是像之前那样调用onPause()方法后又调用onStop()方法。MainActivity之所以只是进入了暂停状态,没有进入停止状态,是因为DialogActivity只是以对话框的形式部分遮挡了MainActivity,在屏幕上还是可以看到MainActivity。

点击返回按钮,返回MainActivity界面,此时onResume()方法被回调执行,如图4-12所示。

图4-12 返回MainActivity界面时的打印日志

这时确保已经返回MainActivity界面,然后继续点击返回按钮退出到主界面,打印信息如图4-13所示。

图4-13 退出程序时的打印日志

此时,Activity的onPause()、onStop()和onDestroy()方法会依次调用,最后Activity被销毁。

R4-2 DialogActivity实例

程序演示到这里,读者应该对Activity的生命周期的整个过程有了更加直观、更加深刻的理解。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈