前言

    掌握好Activ的生命周期对任何安卓开发者来说都很重要,当你深入理解时,就可以编写出更加流畅连贯的程序/应用。你的程序将会拥有更好的用户体验。

(一)活动状态:每个Activity在其生命周期中最多可能会有四种状态

    a:运行状态, 当一个Activity位于回退栈栈顶时,这是Activity就处于运行状态。系统是不会回收处于运行状态的活动的,这样会带来非常差的用户体验。

    b:暂停状态,当一个活动不在处于栈顶位置,但仍然可见,这时就进入了暂停状态。什么叫做不在栈顶却又可见呢,比如弹出框式的Activity,此时并不会占满整个屏幕,下面一层Activity还是可见的。处于暂停状态的Activity仍然是完全存活的,系统只有在内存极低的情况下才会考虑回收这种Activity。当然您也可以调用finish();方法来强制回收。

    c:停止状态,当一个Activity不在处于栈顶且完全不可见的时候就进入了停止状态。但系统依然会为此类Activity保存响应的状态和成员变量,当其他地方需要内存时,处于停止状态的Activity很有可能会被系统回收。

    d:销毁状态,当一个活动从回退栈中移除后就编程了销毁状态。系统会回收处于这种状态的活动,来保证手机的内存充足。


(二)Activity的生命周期:

    让我们先来看一看官方提供的标准图

wKioL1acqfWCB9OfAAKKucqDlcc734.jpg

看到这儿想必亲已经有点脉络了吧,小编再来简单介绍下吧。

    a: onCreate();这个方法想必亲已经见过几百遍了,在项目创建时会有一个主类继承至Activity,并且都重写了这个方法,他会在Activity第一次被创建的时候调用。而您应该在该方法中完成一些初始化的操作,比如说加载布局,绑定事件,生成一些必要参数数据等等。

    b: onStart();方法这个方法在Activity中由不可见变为可见的时候调用,一般不用我们重写。

    c: onResume();这个方法在Activity准备好和用户进行交互的时候调用。此时的Activity一定是位于回退栈栈顶的的,并且处于运行状态。

    d: onPause();这个方法在系统准备去启动或恢复另一个活动的时候调用。我们应该在该方法中将一些消耗CPU的资源释放掉,以及保存一些相关的数据,这个方法执行速度一定要快,不然会影响到新的栈顶的Activity的使用。

    e: onStop();该方法在Activity完全不可见的时候调用,他与onPause()方法的区别主要在:如果启动的新Activity是一个对话框式的活动,那么onPause();方法会得到执行,而onStop()方法则不会被调用。

    f: onDestroy();这个方法在Activity被销毁之前调用,之后的状态则变为销毁状态。

    g: onRestart();这个方法在Activity停止状态转为运行状态之前调用,相当于重启。

以上的方法除了onRestart()方法,其他都是量量相对。从而又可以将Activity分为三种生存期。

    ①: 完整生存期,即Activity在onCreate()方法和onDestroy();方法之间所经历的。一般情况下,一个Activity在onCreate();方法中完成各种初始化操作,而在onDestroy()方法中完成释放内存的操作。

    ②: 可见生存期,即Activity在onStart();方法和onStop();方法之间所经历的。此阶段即便有可能无法和用户进行交互,但Activity总数可见的。我们应该通过这两个方法中合理的管理那些对用户可见的资源,比如在onStart()方法中对资源进行加载,而在onStop()方法中对资源进行释放,从而保证处于停止状态的Activity不会对系统占用过多的内存。

    ③: 前台生存期,级活动在onResume()方法和onPause()方法之间所经历的。在此生存期Activity总数处于运行状态的,此时的Activity可以和用户进行交互,平时我们看的最多的也就是该生存期的Activity...................