Android学习之Activity的生命周期学习

来源:互联网 发布:js替换某个字符串 编辑:程序博客网 时间:2024/05/22 06:06

         Activity是Android应用的最重要的四大组件之一,其他三个分别是Service、BroadcastReseiver和ContentProvider,而Activity是Android应用最常见的组件。

在学习Activity的时候,首先我们来看一下Activity的生命周期,只有熟练的掌握的Activity的生命周期,才能在相应的生命周期中来完成我们相应的工作。

 

        Activity的生命周期

        当Activity处于Android应用中运行时,他的活动状态有Android以Activity栈的形式管理,当前活动的Activity的位于栈顶。随着不同应用的运行,每个Activity都有可能从活动状态转入非活动状态,也有可能从非活动状态转入活动状态。

 

        Activity的生命周期如下图所示:


      

        从上图我们可以看到:在Activity的生命周期中,如下方法会被系统调用:

 

        1、onCreate(Bundle saveStatus)创建Activity的时候被回调。该方法只会被调用一次。

 

         2、onStart():启用Activity时候被调用该方法。

 

         3、onRestart():重新启用Activity的被启动时调用该方法。

 

         4、onResnme():恢复Activity时候调用,onStart()方法之后一定会调用onResume()方法

 

        5、onPause():方法:暂停Activity时候调用;

 

        6、onStop()方法:停止Activity时候被调用;

 

        7、onDestroy():销毁Activity时候调用,该方法只会被调用一次

 

下面我们贴一段源码:来看一下Activity的各个生命周期的执行情况:

 

publicclass ActivityDemoextends Activity {

    privatestaticfinal StringTAG = ActivityDemo.class.getSimpleName();

    @Override

    protectedvoid onCreate(BundlesavedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_demo);

        Log.i(TAG,"onCreate-->Begin");

    }

    @Override

    protectedvoid onStart() {

        super.onStart();

        Log.i(TAG,"onStart-->Begin");

    }

    @Override

    protectedvoid onRestart() {

        super.onRestart();

        Log.i(TAG,"onRestart-->Begin");

    }

    @Override

    protectedvoid onResume() {

        super.onResume();

        Log.i(TAG,"onResume-->Begin");

    }

    @Override

    protectedvoid onPause() {

        super.onPause();

        Log.i(TAG,"onPause-->Begin");

    }

    @Override

    protectedvoid onStop() {

        super.onStop();

        Log.i(TAG,"onStop-->Begin");

    }

    @Override

    protectedvoid onDestroy() {

        super.onDestroy();

        Log.i(TAG,"onDestroy-->Begin");

    }

}

 


        第一次打开Android应用的时候:依次执行的生命周期的方法是:onCreate()--->onStart()èonResume()。

 

        当我们点击返回键退出应用的时候:依次执行的生命周期方法是:onPause()-->onStop()-->onDestroy()。


        还有一种比较常见的情况,就是我们点击Home键的时候,这时候应用依次执行的生命周期方法是:onPause()èonStop()。我们可以看到这个时候应用并没有执行onDestroy()方法。原因是这个时候应用并没有完全退出,而只是进入到后台运行。但是这时候Activity并不是稳定的,如果Android系统在内存不足的时候可能会进行内存清理,会使应用退出。

 

 

        按下Home键,之后在进入应用的时候,这时候应用依次执行的生命周期方法:onRestart()--onStart()--onResume()。

 

         还有一种最常见的情况,是从一个Activity跳转到另一个Activity。这个时候Activity的生命周期方法执行的过程和按下Home键的执行过程是一样。当你点击返回键再返回到上一个Activity的时候应用依次执行的生命周期方法:onRestart()--onStart()--onResume()。


        上面我们说到,当Activity处于Android应用中运行时,他的活动状态有Android以Activity栈的形式管理,当前活动的Activity的位于栈顶。随着不同应用的运行,每个Activity都有可能从活动状态转入非活动状态,也有可能从非活动状态转入活动状态。

        进入到下一个Activity时候,当前Activity被放到栈底,但是这个时候这个Activity并没有被销毁,还是有可能从非活动状态转入活动状态(同样要是被Android系统回收机制回收的话,也可能被销毁)。

        好了,就说到这里,刚开始学习Android,希望能够认真学习,认真总结。

 

 

 

 

 

 

0 0
原创粉丝点击