android Activity 生命周期

一、返回栈(Back Stack)

    栈的特色为先进后出android

    Android使用task来管理Activity。一个task就是一组放在栈里的Activity的集合。这个栈也叫作返回栈(Back Stack)spa

    系统老是会显示处于栈顶的Activity给用户.net

二、Activity状态

    2.1 运行状态:位于栈顶,可见,系统不回收3d

    2.2 暂停状态:不位于栈顶,可见。内存极低时才回收。blog

          打开了一个非全屏或者是透明的Activity。例如,打开了一个对话框形式的Activity。可使当前Activity进入到暂停状态生命周期

    2.3 中止状态:不位于栈顶,不可见。其余地方须要内存时会回收内存

    2.4 销毁状态:从返回栈中移除,系统回收,释放内存。资源

三、生命周期

    3.1 涉及到的具体的方法

        onCreate():Activity第一次被建立时调用,在此方法中完成初始化的操做get

        onStart():Activity由不可见变为可见时调用it

        onResume():Activity准备好与用户进行交互时调用

        onPause():系统准确去启动或者是恢复另外一个活动时调用

        onStop():Activity彻底不可见的时候调用

        onDestroy():Activity被销毁时调用

        onRestart():Activity由中止状态变成运行状态以前调用

    3.2 图表表示

        3.2.1 完整的生命周期

        3.2.2 全部的生命周期

    3.3 文字解释

        Activity的前台生存期,主要是在onResume和onPause之间

        Activity的可见周期为:onStart、onResume、onPause、onStop之间

        Activity的完整的生命周期为:onCreate、onStart、onResume、onPause、onStop、onDestroy

四、Activity A启动B生命周期为

    A刚启动时:

    A启动B时:

    B位于栈顶时,点击返回键:

    在上面的截图中能够看出,A启动B时,会先执行A的onPause方法,因此为了屏幕过分的天然,给用户一个比较好的体验,建议onPause方法中不要执行一些耗时的操做

五、Activity资源被回收的时候,生命周期

    在onStop方法调用以前会调用onSaveInstanceState(Bundle outState)方法。将所须要保存的数据存储到参数bundle中

    能够在onCreate(@Nullable Bundle savedInstanceState)和onRestoreInstanceState(Bundle savedInstanceState)方法里,从参数Bundle 中获取已经保存的数据。若是Activity第一次建立时,onCreate方法的参数为空。可是调用了onRestoreInstanceState方法,那么参数确定不会为空。

    关于保存和恢复View层次结构,系统工做遵循的是一种委托思想:上层委托下层,父元素委托子元素去进行处理。

    当系统配置改变,致使Activity被回收,能够经过配置android:configChanges属性,让Activity不被杀死。可是依然会调用onConfigurationChanged(Configuration newConfig)方法。例如横竖屏发生改变的时候,为了防止Activity被回收从新建立,设置:android:configChanges="orientation"