返回

Activity 生命周期全解:从创建到销毁的奥秘

Android

Android Activity 生命周期概述

Android Activity是应用程序的入口点,也是应用程序与用户交互的主要界面。每个Activity都有自己的生命周期,生命周期从Activity被创建开始,一直持续到Activity被销毁。Activity的生命周期方法提供了对Activity生命周期不同阶段的控制,例如当Activity被创建时,可以执行必要的初始化操作;当Activity被销毁时,可以释放占用的资源。

Activity 生命周期方法

Activity生命周期主要包括以下几个方法:

  • onCreate(Bundle savedInstanceState):Activity正在被创建,参数为onSaveInstanceState保存的状态信息。
  • onStart():Activity正在启动,此时Activity的界面已经创建,但尚未可见。
  • onResume():Activity正在恢复,此时Activity的界面已经可见,可以与用户进行交互。
  • onPause():Activity正在暂停,此时Activity的界面不再可见,但Activity仍然存在于内存中。
  • onStop():Activity正在停止,此时Activity的界面已经不可见,并且Activity将被移出内存。
  • onDestroy():Activity正在销毁,此时Activity的所有资源都将被释放,Activity将从内存中消失。

Activity 生命周期图

正常情况下,Activity的生命周期如图所示:

onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDestroy()

然而,在某些情况下,Activity的生命周期可能会发生变化,例如当Activity被旋转时,Activity的生命周期可能会从onResume()直接跳转到onPause(),然后再跳转到onStop()

Activity 生命周期方法详解

接下来,我们将详细介绍每个Activity生命周期方法的含义和用法。

onCreate(Bundle savedInstanceState)

onCreate()方法是Activity生命周期的第一个方法,它在Activity被创建时被调用。onCreate()方法的参数为Bundle savedInstanceState,该参数保存了Activity上次被销毁时保存的状态信息。

在onCreate()方法中,您可以执行必要的初始化操作,例如设置Activity的布局、初始化数据、注册监听器等。

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

    // 初始化数据
    data = new ArrayList<>();

    // 注册监听器
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // 点击事件处理代码
        }
    });
}

onStart()

onStart()方法在Activity被启动时被调用。onStart()方法表示Activity已经创建,并且即将可见。在onStart()方法中,您可以执行一些准备工作,例如开始动画、加载数据等。

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

    // 开始动画
    animationView.start();

    // 加载数据
    new LoadDataTask().execute();
}

onResume()

onResume()方法在Activity被恢复时被调用。onResume()方法表示Activity已经可见,并且可以与用户进行交互。在onResume()方法中,您可以执行一些恢复操作,例如恢复动画、恢复数据等。

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

    // 恢复动画
    animationView.resume();

    // 恢复数据
    new RestoreDataTask().execute();
}

onPause()

onPause()方法在Activity被暂停时被调用。onPause()方法表示Activity不再可见,但Activity仍然存在于内存中。在onPause()方法中,您可以执行一些暂停操作,例如暂停动画、保存数据等。

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

    // 暂停动画
    animationView.pause();

    // 保存数据
    new SaveDataTask().execute();
}

onStop()

onStop()方法在Activity被停止时被调用。onStop()方法表示Activity已经不可见,并且Activity将被移出内存。在onStop()方法中,您可以执行一些停止操作,例如释放资源、注销监听器等。

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

    // 释放资源
    animationView.release();

    // 注销监听器
    button.setOnClickListener(null);
}

onDestroy()

onDestroy()方法在Activity被销毁时被调用。onDestroy()方法表示Activity的所有资源都将被释放,Activity将从内存中消失。在onDestroy()方法中,您可以执行一些销毁操作,例如销毁数据、注销广播接收器等。

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

    // 销毁数据
    data.clear();

    // 注销广播接收器
    unregisterReceiver(broadcastReceiver);
}

结语

Activity生命周期是Android开发人员必须掌握的核心知识之一。通过理解Activity的生命周期,您可以编写出更健壮、更稳定的Android应用程序。