天天看点

Android四大组件之——Activity的生命周期(图文详解)

      联系方式:[email protected]

      [android四大组件学习系列activity篇]

     上一篇文章讲了activity的定义、状态和后退栈,现在讲讲activity的重点和难点——activity的生命周期。

activity生命周期的回调方法:

Android四大组件之——Activity的生命周期(图文详解)
Android四大组件之——Activity的生命周期(图文详解)

       这些方法定义了activity完整的生命周期,实现这些方法,我们能监控activity生命周期中的三个嵌套循环(monitor three nested loops in the activity lifecycle)

        1.activity的entire lifetime(全部的生命期)发生在

                              调用oncreate()和调用ondestory()之间。

        在oncreate()方法中执行全局状态的建立(例如定义布局),在ondestroy()方法中释放所有保存的资源。

       2.activity的visible lifetime(可见的生命期)发生在

                              调用onstart()和onstop()之间。

         在这个期间,用户能在屏幕上看见activity,和它进行交互。

        系统在activity的完整寿命中可能多次调用onstart()和onstop(),正如activity交替地对用户可见或隐藏。

      3activity的foreground lifetime (前台的生命期)发生在

                               调用onresume()和onpause()之间。

       在这期间,activity在屏幕上所有其他activity的前面,有用户输入焦点。

       一个activity能频繁的在前台进入和出去之间转变。

       下面这张图很好的讲解了activity的生命周期和上面说的三种生命期:

Android四大组件之——Activity的生命周期(图文详解)

       下面通过一个demo来学习以下activity的生命周期:

      demo很简单,就只有两个activity,mainactivity和secondactivity和一个按钮。点击按钮,由mainactivity跳转到secondactivity。

      mainactivity:

Android四大组件之——Activity的生命周期(图文详解)
Android四大组件之——Activity的生命周期(图文详解)

   secondactivity:

Android四大组件之——Activity的生命周期(图文详解)
Android四大组件之——Activity的生命周期(图文详解)
Android四大组件之——Activity的生命周期(图文详解)

 使用activity需要在manifest.xml文件中注册:

Android四大组件之——Activity的生命周期(图文详解)
Android四大组件之——Activity的生命周期(图文详解)
Android四大组件之——Activity的生命周期(图文详解)

    1. 运行应用,mainactivity运行。

     可以看出一个activity运行调用的回调方法是:oncreate()->onstart()->onresume()

Android四大组件之——Activity的生命周期(图文详解)

    2. 点击跳转按钮,由mainactivity跳转到secondactivity:

      1>secondactivity是dialog。

Android四大组件之——Activity的生命周期(图文详解)
Android四大组件之——Activity的生命周期(图文详解)

     由于secondactivity是dialog,所以mainactivity依然可见,所以只调用了它的onpause()方法。

     2>若将secondactivity改为不是dialog(只需在manifest.xml文件中删掉 android:theme="@android:style/theme.dialog"这一行即可)

     再点击跳转按钮:

Android四大组件之——Activity的生命周期(图文详解)

      对于mainactivity,由于不可见,状态由运行变为停止。

      依次调用了它的回调方法:onpause()->onstop()

      3.activity处于运行状态时,点击返回按钮。

Android四大组件之——Activity的生命周期(图文详解)

        点击返回按钮,activity由运行状态变为死亡状态,依次调用它的回调方法:onpause()->onstop()->ondestroy()

      4.activity处于运行状态,点击主页按钮,返回桌面。

Android四大组件之——Activity的生命周期(图文详解)

       activity由运行状态变为停止状态,依次调用它的回调方法:onpause()->onstop()

       5.activity处于停止状态,即由桌面返回到activity。

Android四大组件之——Activity的生命周期(图文详解)

        停止->运行,依次调用回调方法:onrestart()->onstart()->onresume()

      6.activity处于运行状态,旋转屏幕:

Android四大组件之——Activity的生命周期(图文详解)

        可以看出,旋转屏幕是一个销毁activity然后重新创建activity的过程。

         运行->暂停->停止->死亡->运行

        依次调用回调方法:onpause()->onstop->ondestroy()->oncreate()->onstart()->onresume()

    7.activity处于运行状态,手机此时锁屏。

Android四大组件之——Activity的生命周期(图文详解)

    可以看出,手机锁屏,此时由于activity不可见,会进入停止状态。

    依次调用回调方法:onpause()->onstop()

    8.当应用正在运行时,手机锁屏,然后解锁回到应用界面。

Android四大组件之——Activity的生命周期(图文详解)

    可以看出应用从停止状态恢复到运行状态。

    依次调用回调方法:onrestart()->onstart()->onresume()

          本人邮箱:[email protected],欢迎交流讨论。      

          如果喜欢,请点推荐!谢谢~

继续阅读