返回

Android编程权威指南中的Activity生命周期一篇介绍

Android

Android 中 Activity 的生命周期:掌控应用程序的生命线

在 Android 应用程序中,Activity 是用户与应用程序交互的主要界面。每一个 Activity 都拥有自己的生命周期,该周期从创建 Activity 开始,到 Activity 被销毁结束。在这个生命周期中,Activity 会经历不同的状态,每个状态都会触发特定的系统回调方法。

Activity 的生命周期阶段

Activity 的生命周期可分为四个主要阶段:

  1. 创建阶段: 当 Activity 被创建时,系统会调用 onCreate() 方法。在此方法中,您可以执行 Activity 的初始化操作,例如设置布局、加载数据等。

  2. 启动阶段: 当 Activity 被启动时,系统会调用 onStart() 方法。在此方法中,您可以执行 Activity 的启动操作,例如开始动画、播放音乐等。

  3. 恢复阶段: 当 Activity 从暂停状态恢复时,系统会调用 onResume() 方法。在此方法中,您可以执行 Activity 的恢复操作,例如重新加载数据、重新绑定事件等。

  4. 暂停阶段: 当 Activity 被暂停时,系统会调用 onPause() 方法。在此方法中,您可以执行 Activity 的暂停操作,例如停止动画、停止音乐等。

Activity 的生命周期状态

除了四个阶段外,Activity 还有四种状态:

  1. 创建状态: 在 Activity 被创建时,Activity 处于创建状态。
  2. 启动状态: 在 Activity 被启动时,Activity 处于启动状态。
  3. 恢复状态: 在 Activity 从暂停状态恢复时,Activity 处于恢复状态。
  4. 暂停状态: 在 Activity 被暂停时,Activity 处于暂停状态。

状态切换时系统调用的方法

在 Activity 的生命周期中,状态切换时,系统会调用不同的回调方法,包括:

  • onCreate():在 Activity 被创建时调用。
  • onStart():在 Activity 被启动时调用。
  • onResume():在 Activity 从暂停状态恢复时调用。
  • onPause():在 Activity 被暂停时调用。
  • onStop():在 Activity 被停止时调用。
  • onDestroy():在 Activity 被销毁时调用。

示例代码

以下是一个展示 Activity 生命周期方法的示例代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Activity 创建完成
    }

    @Override
    protected void onStart() {
        super.onStart();

        // Activity 已启动
    }

    @Override
    protected void onResume() {
        super.onResume();

        // Activity 已从暂停状态恢复
    }

    @Override
    protected void onPause() {
        super.onPause();

        // Activity 已暂停
    }

    @Override
    protected void onStop() {
        super.onStop();

        // Activity 已停止
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        // Activity 已销毁
    }
}

常见问题解答

1. 为什么需要理解 Activity 的生命周期?

了解 Activity 的生命周期对于编写健壮的 Android 应用程序至关重要。它使您可以处理状态转换,管理资源并提供良好的用户体验。

2. Activity 可以同时处于多个状态吗?

否。Activity 一次只能处于一个状态。

3. onSaveInstanceState()onRestoreInstanceState() 方法有什么作用?

当 Activity 被暂停或销毁时,onSaveInstanceState() 用于保存 Activity 的状态,而在 Activity 恢复时,onRestoreInstanceState() 用于恢复状态。

4. 如何处理配置更改(例如屏幕方向更改)?

要处理配置更改,您需要在 AndroidManifest.xml 中为 Activity 设置 android:configChanges 属性。

5. Activity 的生命周期是否与 Fragment 的生命周期相同?

否,Activity 和 Fragment 具有不同的生命周期,尽管它们可以相互关联。