学习笔记01.activity的生命周期

来源:互联网 发布:淘宝网开发者 编辑:程序博客网 时间:2024/06/05 19:27

做android也有段时间了,但总是感觉自己的知识很散乱,今天开始就整理整理。我们就从activity开始吧。

我们不扯东扯西,我们把activity生命周期中的每个方法搞清楚,各种切换中的生命流程梳理搞清楚,我想我们也就达到目的了。


activity的生命周期包括:onCreate、onStart、 onRestart、onResume、onPause、onStop、onDestroy。

从名称上可以看出 onCreate--onDestroy、onStart--onStop、onRestart--onPause有着相对用的关系,安卓初学者可以按照这个方式去记忆。


onCreate:一个activity被创建,会最先调用此方法,它是生命周期 的第一个方法,此方法中主要做一些初始化工作,比如加载布局资源,初始化activity所需的数据等。该方法

在正常的生命周期内只会被执行一次。

@Override
protected void onCreate(Bundle savedInstanceState) {

     super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


}

1.该方法中有一个Bundle类型的参数savedInstanceState,下面我们来说说他作用:

举个例子:

资源相关的系统配置发生改变导致activity被杀死并重建:比如从竖屏切换到横屏的过程中,因为横竖屏对应的资源文件,系统配置的不同,activity会被先被销毁后重建。此过

程中activity的主要几个生命周期为  onSaveInstanceState-----onDestroy------------->>onCreate-----onRestoreInstanceState。

接着我们说一下onSaveInstanceState方法和onRestoreInstanceState方法。


onSaveInstanceState:(保存数据)

系统只有在activity即将被销毁并且有可能被重新创建时才会调用此方法,就比如上面的情况。换言之activity如果是正常被销毁则不会调用该方法,该方法执行在onDestroy之

前。同理当activity被重新创建以后也才会调用onRestoreInstanceState方法。此方法中会把需要保存的数据封装成一个Bundle对象,当此activity被重新创建时将该Bundle对象

传递给onCreate、onRestoreInstanceState方法。


onRestoreInstanceState:(恢复数据)

此方法会取出Budle中的数据将activity恢复到原来的状态。所以正常启动的activity此方法是不会被调用的,而onCreate方法中的savedInstanceState的值也为null


2.setContentView(R.layout.activity_main):加载resource--layout--activity_main对应的布局资源,这个方法在我看来不必深究,我们只要知道他是加载我们当前activity所对应

的布局资源即可。


onStart:表示activity正在被启动,此时的activity已经可见了,只是还未出现在前台无法跟用户进行交互。另外此方法可能会被多次执行,这一点要和onCreate区分开。


onRestart:表示一个activity正在被重启,一般来说是activity在未被销毁的情况下,从完全不可见到可见会调用该方法。这里要和另一种情况做一下区分,举两个例子:

   1.从activity A启动activity B,再点击返回键回到activity A .  activity A具体生命周期如下:

    onPause--onStop------> onRestart--onStart--onResume。(可以看出此时onStart再次被执行了)

   这里有一种特殊情况,当被启动的activity B采用的是透明主题时,activity A的onStop方法不会被执行,具体的生命流程就类似下面的这种情况。


   2.activity A 中弹出一个dialog,dialog消失回到activity  activity A具体生命周期如下:

   onPause-------> onResume。   弹出dialog  activity A 仍然是可见的所以不会调用onRestart方法。

 这里我只列举了这两种情况,其他的复杂情况读者可以重写对应的生命周期方法,做相关的打印,来探究其具体的生命流程。


onResume:表示当前的activity已近显示到前台开始活动,并且可以和用户进行交互。这里可以和 onStart 来做对比,此方法也可能会被多次执行。


onPause:表示activity正在被停止,它的实质是将activity由活动状态转变为非活动状态。

onStop :它的实质是将activity由可见状态转变为不可见状态。

所以你理解了每一个方法它的实质作用,你不用打印,你都能感觉出某一个方法他是否会被调用。


onDestroy:销毁当前activity,做一些回收工作。


主要切换过程的生命周期下图给出了详细过程。





最后这是我第一次写博客,文章中有不对的地方,希望大家帮我指出来,免得误导别人,同时我们也可以一起进步不是。


















1 0
原创粉丝点击