盒子
盒子
Posts List
  1. 一.Activity生命周期
  2. 二.几种切换下的activity生命周期情况
    1. 1.启动A
    2. 2.启动A->按back返回
    3. 2.启动A->按home返回
    4. 3.启动A->启动B->按back返回A
    5. 4.启动A->启动B->按home
    6. 5.启动A->切换横竖屏
  3. 三.finish ,onDestroy exit
  4. 四.onSaveInstantState onrestoreinstancestate触发时机

activity基础(1) 生命周期

一.Activity生命周期

官方activity生命周期图:

image

activity只有三种是常驻状态,其他状态都会很快被切换掉。这三种状态是

  • resumed
  • paused
  • stopped

resumed 表示 activity正在acitivity栈顶,且正常显示,也就是我们常说的运行中的状态。

paused 表示暂停状态,它经常出现在多个activity互相切换的情况中,其中一个acitivty如果没有被完全遮盖(遮一半露一半,或者顶部的activity有透明区域能看到下面的activity),则这个半遮掩的activity处于paused状态

stopped 表示停止状态 ,它已经被其他activity顶替掉,从视觉上看不到任何关于这个activitiy的东西,但是它仍然被放置在activity的栈中。

destroyed 表示activity已经销毁了,它完全从activity栈中移除,且占用内存被释放。触发desposed状态,需要我们手动调用finish,或者按back键。

二.几种切换下的activity生命周期情况

1.启动A

onCreateA -> onStartA -> onResumeA

2.启动A->按back返回

onCreateA -> onStartA -> onResumeA -> onPauseA -> onStopA -> onDestroyA

2.启动A->按home返回

onCreateA -> onStartA -> onResumeA -> onPauseA -> onStopA

3.启动A->启动B->按back返回A

onCreateA -> onStartA -> onResumeA -> onPauseA ->onCreateB -> onStartB -> onResumeB -> onSaveInstantStateA -> onStopA -> onDestroyA

4.启动A->启动B->按home

onCreateA -> onStartA -> onResumeA -> onPauseA ->onCreateB -> onStartB -> onResumeB -> onSaveInstantStateB -> onStopB

5.启动A->切换横竖屏

onCreateA -> onStartA -> onResumeA -> onPauseA onSaveInstantStateA -> onStopA -> onDestroyA -> onCreateA -> onStartA -> onrestoreinstancestateA -> onResumeA

三.finish ,onDestroy exit

activity.finish,它将activity从activity栈中移除,并未直接销毁,由系统根据优先级决定何时销毁。

activity.onDestroy,activity已经销毁,且占用内存空间被释放。

System.exit(0) ,它将整个app结束掉,app生命周期终结。

四.onSaveInstantState onrestoreinstancestate触发时机

onSaveInstantState 的作用是存储activity的上下文信息,如果我们刻意要销毁某个activity,那就不需要保存上下文,因此onSaveInstantState就在于保存非用户意愿导致的activity可能会被销毁的情况。

例如:

  • 切换横竖屏
  • start另外一个activity
  • 按home键

onrestoreinstancestate 更多用于activity非意愿下关闭而又恢复的情况,如切换横竖屏,内存过低销毁又被激活等。

支持一下
扫一扫,支持牛头码农