Activity生命周期切换场景

正常情况:

启动Activity

            用户打开activity ——> onCreate() ——>onStart() ——>onResume()——>运行状态

运行状态 ——>当前activity部分被覆盖(仍然可见,如弹窗等)

           运行状态——>onPause()    (暂停当前的activity运行)

运行状态 ——>当前activity被完全覆盖,完全不可见(打开新的activity、锁屏、按HOME键回到主屏、处于后台等)

        运行状态——>onPause() ——>onStop() (暂停当前的activity运行)

被部分覆盖的activity ——>运行状态(即 回到前台)

        onPause() ——>onResume()——>运行状态

当被完全覆盖的activity ——>运行状态 (即 回到前台)

        onStop() ——>onRestart() ——>onStart() ——> onResume() ——>运行状态

运行状态 ——> 用户退出当前activity

      运行状态——> onPause() ——>onStop() ——>onDestory() ——>运行结束

异常状态:

当被完全覆盖的activity处于后台 ——>更高优先级的进程需要内存,但是内存不足

    onStop() ——>直接杀死进程(即杀死当前activity)
    之后当用户退回当前activity时,会再次调用 onCreate()——>onStart()——>onResume()——>运行状态

    当系统内存不足时,会按优先级杀死目标activity的进程
    activity的优先级 如下( 高 ——>低)
    1、完全可见、位于前台的activity,即 正与用户交互的activity
    2、可见但不位于前台的activity(即 部分被覆盖 如 弹窗)
    3、后台activity 即 不可见,不位于前台

资源相关的系统配置发生改变(如 横屏 切换 竖屏)

开始——>onSaveInstanceState() (保存当前状态 数据等)——>onPause() ——>onStop() ——>onDestroy()
[到此activity销毁完毕]
[下面是重新创建activity和恢复数据]
——>onCreate ——>onStart() ——>onRestoreInstanceState()(恢复数据 ——>onResume()——>重新运行

可不重新创建activity从而不调用onSaveInstanceState()、onRestoreInstanceState():
设置activity的configChanges属性设置


          <activity
                android:configChanges=“属性"
                //属性说明:
                //local:设备本地位置发生变化、一般指切换系统语言
                //keyboardHidden:键盘的可访问性发生变化、如调出了键盘
                //orientation:屏幕方向发生变化,如旋转
                //screenSize:屏幕尺寸发生变化,如旋转
                //smallestScreenSize:设置的物理屏幕尺寸发生变化,与屏幕方向无关
                    如切到外部显示设备
           /activity>
          此时系统将回调onConfigurationChanged ()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容