activity生命周期-每日小记

参考activity生命周期

onCreate()

activity必须实现此回调,在系统初次创建Activity的时候就会触发,进入已经创建的状态
在OnCreate()中,执行的基本应用逻辑,在activity内仅发生一次

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
protected void onCreate(Bundle bundle) {  
super.onCreate(bundle);
ExplainUtils.setSystemUiVisibility(getWindow().getDecorView());
if (Build.VERSION.SDK_INT >= 28) {
WindowManager.LayoutParams attributes = getWindow().getAttributes();
attributes.layoutInDisplayCutoutMode = 1;
getWindow().setAttributes(attributes);
}
if (Build.VERSION.SDK_INT >= 30) {
WindowInsetsController windowInsetsController = getWindow().getDecorView().getWindowInsetsController();
windowInsetsController.hide(WindowInsets.Type.statusBars());
windowInsetsController.hide(WindowInsets.Type.navigationBars());
windowInsetsController.hide(WindowInsets.Type.systemBars());
windowInsetsController.setSystemBarsBehavior(2);
}
getWindow().setStatusBarColor(getResources().getColor(R.color.transparent));
getWindow().setNavigationBarColor(getResources().getColor(R.color.transparent));
if (!isTaskRoot()) {
MSLog.m11849i(TAG, "!isTaskRoot()");
boolean z = getIntent().getSourceBounds() != null;
MSLog.m11849i(TAG, "fromLauncher:" + z);
if (z) {
finish();
return;
} else if (isYSDK()) {
MSLog.m11849i(TAG, "isYSDK:true");
MsldLifecycleUpdata.get().onNewIntent(this, getIntent());
finish();
return;
}
}
if (ExplainUtils.isCheckProtocal(this)) {
MsThreadUtil.postDelayedMainThread(new Runnable() { // from class: com.ms.sdk.plugin.explain.ExplainActivity.1
@Override // java.lang.Runnable
public void run() {
ExplainUtils.toNext(ExplainActivity.this);
}
}, 300L);
return;
}
setWindowStyle();
initView();
initGirdView();
}

例如这里基于api版本,初始化状态栏.初始化系统ui之类的功能

Onstart

当Activity进入已启动状态,系统会调用Onstart(),从调用会以应用准备activity进入前台并变为可互动状态.
当 activity 进入“已启动”状态时,所有具有生命周期感知能力的组件 activity 生命周期的剩余时间会收到 ON_START 事件。
onStart() 方法完成 与“已创建”状态一样,activity 不会保持 “已启动”状态此回调完成后,Activity 将进入 处于_已恢复_状态,并且系统会调用 onResume() 方法。

onResume()

当activity进入”已恢复” 状态,会进入前台,并且执行onResume()系统调用,这是用户与应用的交互状态,就是我们真正运行的那个界面.
官方文档描述的是,如果焦点远离应用(这里的焦点应该是主屏幕是否在使用这个activity)
例如接听来电的设备、用户 导航到其他 activity,或设备屏幕关闭。就会退出交互状态

activity 进入“已恢复”状态时,所有具有生命周期感知能力的组件都会绑定, activity 生命周期的剩余时间会收到 ON_RESUME 事件。这时,生命周期组件可以启用在组件可见且位于前台时需要运行的任何功能,例如启动相机预览。

当发生中断事件的时候,活动进入已暂停状态,并且系统会调用onPause()回调

如果 Activity 返回到 从“已暂停”状态转换为“已恢复”状态,系统会再次调用 onResume() 方法结合使用。因此,请实施 onResume(),用于初始化您在发布期间释放的组件 onPause(),以及执行任何其他 每次活动进入“已恢复”状态时都必须进行的初始化 状态。

onPause()

上述所知,activity不再位于前台,但它的还处于后多窗口,调用onPause()

  • 中断应用执行的事件,如“ onResume() 回调会暂停当前 Activity。这是最常见的情况。(比如你点击触发事件,打开了新的activity新,系统正准备把另一个Activity切换到前台)
  • 在多窗口模式下,只有一个应用获得焦点 而系统会暂停所有其他应用。
  • 打开新的半透明 activity(例如对话框) 会暂停其涵盖的活动。只要 该 activity 部分可见但未获得焦点, 保持暂停状态。
    当 activity 进入“已暂停”状态时,所有具有生命周期感知能力的组件 activity 生命周期的剩余时间会收到 ON_PAUSE 事件。这时,生命周期组件可以停止在组件未位于前台时无需运行的任何功能,例如停止相机预览。

使用 onPause() 方法暂停或 调整无法继续或可能继续适度的操作, Activity处于“已暂停”状态时, 预计很快就会恢复。

onStop

当您的 activity 不再对用户可见时,它会进入 已停止状态,系统将调用 onStop()]回调。当新启动的 activity 覆盖整个屏幕时,可能会发生这种情况。通过 系统还会调用 onStop() 当 activity 完成运行并即将终止时。

当 activity 进入“已停止”状态时,所有生命周期感知型组件都将与 activity 生命周期的剩余时间会收到 ON_STOP 事件。这时,生命周期组件可以停止在组件未显示在屏幕上时无需运行的任何功能。
另外,由于Pause的时候大概率需要快速切换activity,所以一般使用 onStop() 执行 CPU 相对密集的关闭操作
进入“已停止”状态后,Activity 要么返回与用户互动,要么结束运行并消失。如果 Activity 返回,系统将调用 onRestart()。如果 Activity 完成运行,系统会调用 onDestroy()`

Ondestroy()

销毁 Ativity 之前,系统会先调用 onDestroy()。系统调用此回调的原因有两种:

  1. 由于用户完全关闭了 activity,因此 activity 正在结束 或由于 finish()正在 调用该方法。
  2. 由于配置,系统暂时销毁 activity 更改,例如设备旋转或进入多窗口模式。

当 activity 进入已销毁状态时,所有具有生命周期感知能力的组件都会绑定, activity 生命周期的剩余时间会收到 ON_DESTROY 事件。这就是 生命周期组件可以清理 Activity 会被销毁。


activity生命周期-每日小记
http://example.com/2026/03/26/activity生命周期/
Author
fox
Posted on
March 26, 2026
Licensed under