LESSON S2

Activity 与生命周期

应用界面也有自己的作息表

概念 · 示例 · 练习 · 小测
预计 9 分钟Android Studio

先用人话理解

Activity 会经历创建、可见、可交互、暂停和销毁等状态。系统可能因旋转、返回或内存压力重建界面,因此不要把所有重要数据只放在 Activity 字段里。

本课要点:记忆口诀:创建、可见、可交互;失焦、不可见、销毁。配置变更可能导致重建,持久数据应放在合适的数据层。

代码例子

先读注释,再关注每一行如何把数据变成结果。

ANDROID · Activity 回调
import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState) // 创建:初始化
        Log.d("LifeCycle", "onCreate")
    }
    override fun onStart() {
        super.onStart() // Activity 开始可见
        Log.d("LifeCycle", "onStart")
    }
    override fun onResume() {
        super.onResume() // 进入前台,可以交互
        Log.d("LifeCycle", "onResume")
    }
    override fun onPause() {
        super.onPause() // 失去前台焦点,保持轻量
        Log.d("LifeCycle", "onPause")
    }
    override fun onStop() {
        super.onStop() // 完全不可见
        Log.d("LifeCycle", "onStop")
    }
}

再看一个用法

LIFECYCLE · 回调顺序
// 首次启动时通常会观察到:
// onCreate → onStart → onResume
// 离开前台通常会观察到:onPause → onStop
// 重新返回时通常会观察到:onRestart → onStart → onResume
// 系统重建或 Activity 结束时还可能调用 onDestroy。

动手改一改

练习:把“打开教室灯”“学生进入教室”“下课离开” 分别对应到 onCreate、onResume、onStop,想想它们为何不是同一件事。

查看 Android / Compose 环境指南 ↗

提示:Android 专属示例需要 Android Studio 项目和对应依赖;普通 Kotlin 示例可在 Playground 中尝试。

这是 Activity 类中的生命周期回调示例,需要 Android Studio 项目。可以在 Logcat 中筛选 LifeCycle 观察回调日志;onPause 并不代表 Activity 一定会立即销毁。

三道小测

先自己选择,再展开答案。答错也没关系,重要的是知道为什么。

1. Activity 开始初始化通常在哪个回调?

查看答案与解析

正确答案:A。回到概念和代码示例,再解释一次为什么。

2. Activity 完全不可见时通常会进入哪个回调?

查看答案与解析

正确答案:B。抓住题目中的核心概念,重新对照示例理解。

3. onPause 后 Activity 一定立刻销毁吗?

查看答案与解析

正确答案:B。抓住题目中的核心概念,重新对照示例理解。

深入阅读

想继续往下挖,可以阅读 Kotlin / Android 官方文档。

打开官方文档 ↗

标记学习进度

进度保存在当前浏览器的 localStorage 中。