返回

Activity 生命周期剖析——揭秘其执行的底层秘密

开发工具

理解 Activity 生命周期

Activity 生命周期是指 Activity 从创建到销毁的过程中所经历的状态变化。这些状态包括:

  • onCreate():当 Activity 首次创建时调用。
  • onStart():当 Activity 变为可见时调用。
  • onResume():当 Activity 获得焦点时调用。
  • onPause():当 Activity 失去焦点时调用。
  • onStop():当 Activity 不再可见时调用。
  • onDestroy():当 Activity 被销毁时调用。

生命周期执行顺序

在正常情况下,Activity 生命周期按照上述顺序执行。然而,在某些情况下,生命周期可能会发生改变。例如:

  • 当 Activity 从后台恢复到前台时,onResume() 方法会被直接调用,而 onStart() 方法不会被调用。
  • 当 Activity 被销毁并重新创建时,onCreate() 方法会被再次调用,而 onStart() 和 onResume() 方法不会被调用。

影响生命周期执行顺序的因素

有几个因素可能会影响 Activity 生命周期执行顺序,包括:

  • 任务栈 :Activity 是在任务栈中管理的。当 Activity 从后台恢复到前台时,它会进入任务栈的顶部,并且其生命周期状态会发生改变。
  • 窗口管理 :窗口管理器负责管理 Activity 的显示。当 Activity 被显示或隐藏时,其生命周期状态也会发生改变。
  • 系统事件 :系统事件,如设备旋转或内存不足,也会导致 Activity 生命周期状态的改变。

特殊场景下的生命周期变化

在某些特殊场景下,Activity 生命周期可能会发生变化。例如:

  • 透明 Activity :透明 Activity 在显示时不会覆盖其他 Activity。当透明 Activity 显示时,其生命周期状态不会发生改变。
  • 对话框 :对话框也是一种特殊的 Activity。当对话框显示时,其生命周期状态不会发生改变。
  • 片段 :片段是 Activity 的一部分。当片段被添加到 Activity 中时,其生命周期状态会发生改变。

避免生命周期陷阱

在开发过程中,需要注意一些常见的生命周期陷阱,包括:

  • 不要在生命周期方法中执行耗时操作 :生命周期方法应该尽可能快地执行。如果在生命周期方法中执行耗时操作,可能会导致 Activity 出现卡顿或崩溃。
  • 不要在生命周期方法中保存 Activity 状态 :Activity 的状态应该在 onSaveInstanceState() 方法中保存,而不是在生命周期方法中保存。如果在生命周期方法中保存 Activity 状态,可能会导致 Activity 的状态丢失。
  • 不要在生命周期方法中启动新 Activity :在生命周期方法中启动新 Activity 可能会导致 Activity 出现崩溃。如果需要在生命周期方法中启动新 Activity,应该使用 startActivityForResult() 方法。

结论

Activity 生命周期是 Android 开发者必须掌握的核心知识。通过对 Activity 生命周期有深入的理解,可以避免常见的开发问题,并编写出更加健壮的应用程序。