Android开发的那些事:了解Activity&Fragment的生命周期

前言

本篇文章只是分享自己学习Android的一些心得,方便自己日后进行查看和复习。刚开始学习Android时,都会接触和学习Activity的生命周期,但刚开始看时总是只对知识进行一些了解而已,完全不知道这些内容在什么时候会派上用场。我相信每一开发者都会经历这样一个阶段,直到自己某一天开发自己的app时才真正的掌握这些生命周期的作用。接下来将分析Activity和Fragment的生命周期。

  • Activity的生命周期

首先先给出一张官方的解释图:

Android开发的那些事:了解Activity&Fragment的生命周期

一个完整的Activity的生命周期由这几个方法组成:onCreate()、onStart()、onResume()、onPause()、onRestart()、onStop()、onDestroy()。接下来将解释每个方法的调用场景:

  • onCreate():当Activity刚创建启动时进行调用,且只调用一次
  • onStart():当启动一个Activity时进行调用

  • onResume():恢复Activity时会被调用,并且在onStart()方法后一定会调用onResume()

  • onPause():暂停Activity时会被调用

  • onStop():停止Activity时被调用

  • onDestroy():销毁Activity时被调用,并且这个方法只会被调用一次

  • onRestart():重新启动Activity时会被调用

在一个项目中,当需要从一个Activity跳转到另一个Activity,并且上一个Activity没有被销毁时。要是想对上一个Activity进行一些数据的保存,可以重新onPause()方法。而再次恢复到上一个Activity想对数据进行更新,则可以重新onResume()方法。

当一个新Activity不完全遮挡上一个Activity时(即上一个Activity还可以看见,但已经失去了焦点),则会调用onPause()方法,例如弹窗、锁屏。当一个Activity被完全遮挡时,则会调用onStop()方法。

  • Fragment的生命周期

Fragment作为Activity的子模块,也可以把它当做一个Activity的片段。自然有着和Activity相似的生命周期,首先放出一张官方的解释图:

Android开发的那些事:了解Activity&Fragment的生命周期

和Activity的生命周期相比,Fragment多了这几个方法:onAttach() 、onCreateView() 、onActivityCreated()、onDestroyView()、onDetach()。

  • onAttach():Fragment和Activity建立关联的时候调用,可以获得activity的传递的值
  • onCreateView():为Fragment创建视图(加载布局)时调用(给当前的fragment绘制UI布局,可以使用线程更新UI)
  • onActivityCreated():当Activity中的onCreate方法执行完后调用(表示activity执行oncreate方法完成了的时候会调用此方法)
  • onDestroyView():Fragment中的布局被移除时调用(表示fragment销毁相关联的UI布局)
  • onDetach():Fragment和Activity解除关联的时候调用(脱离activity)

作为一个Activity的一部分,Fragment在创建时首先必须和Activity建立联系,然后在为自己建立视图(因为Fragment可以拥有自己的UI界面),之后等待Activity创建。随后就基本和Activity的生命周期类似。而销毁的过程则是创建的逆过程,要注意最后和Activity解除关联。

最后给出一张两者的对比图,方便理解:

Android开发的那些事:了解Activity&Fragment的生命周期