`
byandby
  • 浏览: 1689068 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android Activity生命周期

阅读更多
Activity生命周期



方法名称 描述 Killable?(能否被杀掉) 下一个调用的方法
onCreate()
当这个Activity第一次被创建的时候,调用此方法。这个方法通常用于:1、为Activity设置所要使用的布局文件2、为按钮绑定监听器等静态的设置操作。 No onStart()

onStart()
当Activity处于可见状态时,调用此方法。 No onResume()
or onStop()

onResume()
开始与用户进行交互时(能够获得用户焦点,可以进行点击等操作的时候),调用此方法。 No onPause()

onRestart()
之前被停止,现在重新启动,调用此方法。 No onStart()

onPause()
当系统启动另外一个新的Activity时,先调用前一个Activity的此方法。这个方法通常用于:保存现有的Activity中的数据、停止动画等,这个实现方法必须非常快。 Yes onResume()
or
onStop()

onStop()
当Activity处于不可见状态时(现有的Activity被新的Activity完全覆盖时),调用之前Activity的此方法。
注:如果只是在现有的Activity中弹出一个对话框,没有完全覆盖现有的Activity的话是不会调用此方法的。示例请看Activity生命周期(二)。 Yes onStart()
or
onDestroy()

onDestroy()
销毁Activity。
有两种情况会对Activity进行销毁:1、在系统不足以支撑现有的应用程序的情况下,系统会关闭(销毁)掉一部分系统认为不必要的Activity,以节省空间。2、程序中手动调用finish()方法进行销毁。 Yes nothings
关于能否被杀掉:当一个Activity调用了onPause()、onStop()或onDestroy()方法(Killable?为Yes的方法),而系统在一定情况下(如系统不足以支撑现有的应用程序的情况下),会先关闭(销毁)掉这部分Activity。

示例1:创建一个Android应用程序,写两个Activity,都实现以上7个方法,通过从第一个Activity跳转到第二个Activity,然后点击模拟器右侧的返回按钮,根据应用程序中输出的内容观察Activity的生命周期。

在这里顺便大致记录一下开发步骤:
1、创建一个Android应用程序
2、写两个Activity(FirstActivity、SecondActivity),都实现以上7个方法,并都输出一句语句。
3、因为要从FirstActivity跳转到SecondActivity,所以要在FirstActivity的布局文件中添加一个按钮,并且要写一个监听器,为按钮绑定OnclickListener事件。
4、不要忘记将新创建的Activity添加到AndroidManifest.xml文件中。
5、然后运行程序观察。
(这里只大致讲了一下开发流程没有将具体的代码贴出来,现在将程序打包了,有需要的可在附件中下载)

运行程序:
1、当程序刚开始运行FirstActivity的时候,控制台输出以下内容:



从控制台输出内容来看,程序先执行了FirstActivity的onCreate()方法,然后再依次执行了onStart()、onResume()方法。
2、当点击FristActivity上的按钮时,控制台输出以下内容:



从控制台输出内容来看,程序先调用了FirstActivity的onPause()方法,然后再一次调用了SecondActivity的onCreate()、onStart()、onResume()方法,最后调用了FirstActivity的onStop()方法。
3、点击模拟器右侧的返回按钮,控制台输出以下内容:



从控制台输出内容来看,程序先调用了SecondActivity的onPause()方法,然后再依次调用了
FirstActivity的onRestart()、onStart()、onResume()方法,再调用了SecondActivity的onStop()、onDestroy()方法。
注意:当点击返回的时候,这里调用的不是FirstActivity的onCreate()方法而是onRestart()方法,因为在之前FirstActivity已经被创建过了并且没有销毁,只要当FirstActivity销毁了再调用FirstActivit y的时候才会调用onCreate()方法。

上面在描述onStop()方法的时候有说到,只有当Activity处于不可见状态,完全被新的Activity覆盖时才会调用之前Activity的此方法。如果只是在现有的Activity上弹出一个对话框,没有完全覆盖现有的Activity,那么是不会调用此方法的。
下面在示例1的基础上进行修改,将SecondActivity修改成对话框形式进行显示,来看一下Activity的生命周期。
对话框形式的Activity与普通Activity没太大区别,只需要将AndroidManifest.xml文件中的对应的Activity标签增加以下这么一个属性即可。
android:theme="@android:style/Theme.Dialog"
(示例2源码也在附件中,有需要的可下载进行运行查看。)
运行程序的时候控制台输出:



点击FristActivity上的“启动SecondActivity”按钮,弹出SecondActivity的对话框,控制台输出以下内容:



根据输出内容可观察到,与示例1相比,该应用程序没有运行FristActivity的onStop()方法。
所以,只有现有的Activity被新的Activity完全覆盖的时候,才会调用之前Activity的onStop()方法。


此笔记参考的是[Android开发视频教学]这套视频,有需要的可以在网上下载此视频噢。
  • 大小: 64.6 KB
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics