Activity生命周期

122 阅读2分钟

在Activity从建立到销毁的过程中需要在不同的阶段调用7个生命周期方法。

\

我们打开应用时先后执行了onCreate()->onStart()->onResume三个方法,
BACK键:

  当我们按BACK键时,我们这个应用程序将结束,这时候我们将先后调用onPause()->onStop()->onDestory()三个方法 ;\

HOME键:

  当我们打开应用程序时,比如浏览器,我正在浏览NBA新闻,看到一半时,我突然想听歌,这时候我们会选择按HOME键,然后去打开音乐应用程序,而当我们按HOME的时候,Activity先后执行了onPause()->onStop()这两个方法,这时候应用程序并没有销毁;而当我们再次启动ActivityDemo应用程序时,则先后分别执行了onRestart()->onStart()->onResume()三个方法;

从图1所示的Activity生命周期不难看出,在这个图中包含了两层循环,第一层循环是onPause-> onResume -> onPause,第二层循环是onStop -> onRestart -> onStart -> onResume -> onPause-> onStop。我们可以将这两层循环看成是整合Activity生命周期中的子生命周期。第一层循环称为焦点生命周期,第二层循环称为可视生命周期。也就是说,第一层循环在Activity焦点的获得与失去的过程中循环,在这一过程中,Activity始终是可见的。而第二层循环是在Activity可见与不可见的过程中循环,在这个过程中伴随着Activity的焦点的获得与失去。也就是说,Activity首先会被显示,然后会获得焦点,接着失去焦点,最后由于弹出其他的Activity,使当前的Activity变成不可见。因此,Activity有如下3种生命周期:

* 整体生命周期:onCreate -> ... ... -> onDestroy。
* 可视生命周期:onStop -> ... ... -> onPause。
* 焦点生命周期:onPause -> onResume。


注意:在图1所示的Activity生命周期里可以看出,系统在终止应用程序进程时会调用onPause、onStop和onDesktroy方法。而onPause方法排在了最前面,也就是说,Activity在失去焦点时就可能被终止进程,而onStop和onDestroy方法可能没有机会执行。因此,应该在onPause方法中保存当前Activity状态,这样才能保证在任何时候终止进程时都可以执行保存Activity状态的代码。

\

\