Skip to content

Activity的生命周期

Posted on:March 4, 2020 at 17:20:47 GMT+8

前言

Activity的生命周期是Android中的基础。在用户使用App的过程中,Activity在各个状态中不停转换。

onCreate()开始,中间经过一定的状态变换,直到onDestroy()结束,是Activity的一个完整的生命周期。

onCreate()

在系统首次创建Activity时调用,Activity在创建后进入已创建状态。

通常在此方法中进行一些初始化工作。

onStart()

执行完onCreate()方法后,Activity进入已开始状态,开始执行onStart()

此时Activity对用户可见。此方法一般会比较快完成。

onResume()

接下来就是onResume(),Activity处于已恢复状态,正在与用户进行交互。

应用会一直保持这种状态,直到某些事件发生,让焦点远离应用。此类事件包括接到来电、用户导航到另一个 Activity,或设备屏幕关闭。在这个状态可以使用要求生命周期组件可见,且需要在前台的功能,如调用摄像头。

当发生中断事件时,Activity进入已暂停状态,系统调用 onPause() 回调。

onPause()

此时Activity不再位于前台,进入已暂停状态。

此方法应该很简单,不应该在这里进行一些消耗资源的操作。

如果接下来Activity回到前台,会调用onResume()

onStop()

此时Activity不再可见,进入已停止状态。

onStop()方法中,应用应释放或调整应用对用户不可见时的无用资源。例如,应用可以暂停动画效果,或从细粒度位置更新切换到粗粒度位置更新。 还应该使用onStop()执行 CPU 相对密集的关闭操作。

onDestroy()

在销毁Activity之前,调用此方法。

有两种情况:

  1. 用户将要结束Activity或系统调用finish()onDestroy()将是最后一个生命周期回调;
  2. 配置发生改变。接着系统会立即新建Activity实例,调用其onCreate()

onDestroy()时,应该进行一些释放资源的操作。

更多

当Activity处于同一个进程(应用)中,一个Activity A启动另一个Activity B时,会

  1. Activity A执行onPause()
  2. Activity B执行onCreate()onStart()onResume()
  3. Activity A如果完全不可见,将执行onStop()

参考

了解Activity生命周期

2020-3-2 21:36