先用人话理解
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 中。