Android Activity详解-生命周期


  • Android Activity详解-生命周期
  • Activity 的存在状态
  • running
  • paused
  • stopped
  • killed
  • Activity 的生命周期
  • 正常生命周期
  • onCreate
  • onRestart
  • onStart
  • onResume
  • onPause
  • onStop
  • onDestroy
  • 异常生命周期
  • 系统配置改变
  • Activity 被系统回收


Activity 的存在状态

running

Activiy 位于屏幕前台,并且具有用户焦点

paused

另一个 Activity 位于屏幕前台,并且具有用户焦点,但此 Activity 仍然可见

stopped

Activity 被另一个 Activity 完全覆盖,该 Activity 位于”后台”

killed

Activity 被销毁

状态

是否存在

是否可以交互

是否可见

running




paused




stopped




killed




注:当Activity内存不足时,会首先关闭 stoped 状态的 Activity,其次才会关闭 Paused 状态的 Activity

Activity 的生命周期

正常生命周期

正常生命周期是指:在正常情况下运行,经过用户操作的情况下的生命周期的改变

android页面销毁事件 销毁activity_sed

**Activity 正常启动时**
onCreate() -> onStart() -> onResume()

**按下 Home 键时**
onPause -> onStop()

**重新回到 Activity 时**
onRestart() -> onStart() -> onResume();

**按下 Back 键时**
onPause() -> onStop() -> onDestroy()

**打开另一个 Activity[2] 时**
onPause() -> [2]onCreate() -> [2]onStart() -> [2]onResume() -> onStop();

onCreate()

首次创建 Activity 时调用,可以在此方法中执行“全局”状态设置,如调用 setContentView() 设置布局,或者将数据绑定到列表等

onRestart()

在 Activity 已停止并即将再次启动前调用,一般 Activity 状态由不可见转为可见,此方法会被调用

onStart()

在 Activity 对用户可见之前调用,Activity 可见但不可交互

onResume()

在 Activity 开始与用户进行交互之前调用,Activity可以交互,具有用户焦点

onPause()

在 Activity 正在停止时调用,此方法通常用于保存数据,停止动画以及其他可能消耗 CPU 的内容,它应该非常迅速地执行所需操作,因为它返回后,下一个 Activity 才能继续执行

onStop()

在 Activity 对用户不再可见时调用,表示 Activity 即将停止,可以做轻量级回收工作

onDestroy()

在 Activity 被销毁前调用,这是 Activity 收到的最后调用,当 Activiy 调用了 finish() 或者 系统销毁了 Activity 的实例时,会调用此方法,一般用于回收工作和资源的释放

异常生命周期

异常生命周期是指:Activity 被系统回收或者系统配置改变

系统配置改变

当系统配置改变时Activity 会被销毁, 依次调用onPause()-onStop()-onDestroy(), 并且会调用 onSaveInstanceState() 保存当前 Activity 的状态,这个方法只会在异常情况下调用,当Activity重新创建时,会调用 onRestoreInstanceState() 方法,并把保存的 Bundle 对象传递给此方法和 onCreate() 方法

可以指定 android:configChanges=”orientation” 来使横竖屏切换是不重新创建 Activity

Activity 被系统回收

当系统内存不足时,会按照 Activity 存在状态回收 Activity,并通过 onSaveInstanceState() 和 onRestoreInstanceState() 来存储和恢复数据