Activity 与生命周期
了解 Activity 的含义,理解 Activity 生命周期回调(onCreate、onStart、onResume、onPause、onStop、onDestroy),并使用 ViewBinding。
Activity 与生命周期 是 CoddyKit 上的免费 Android Academy 课时。 这是第 2 节课,共 7 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Android Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Android Academy 课程共包含 7 节课。
什么是活动?
活动是 Android 应用中的一个独立屏幕。
- 每个屏幕(登录、主页、设置)都是一个活动
- 它负责管理布局(XML)和用户交互
- 在 AndroidManifest.xml 中声明
您可以把它理解为 Android 中等同于网页的概念——每个页面都是一个活动。
活动生命周期
当用户在应用中导航时,活动会经历一系列生命周期状态:
- 已创建 → 已启动 → 已恢复(可见且处于活动状态)
- 已暂停(部分隐藏)
- 已停止(完全隐藏)
- 已销毁(活动不再存在)
您可以重写生命周期方法来响应这些状态转换。
生命周期回调
六个主要的生命周期回调:
onCreate()——活动正在创建。在此处设置布局。onStart()——活动变为可见。onResume()——活动位于前台,用户可以与其交互。onPause()——用户即将离开。请保存临时数据。onStop()——活动不再可见。onDestroy()——活动正在销毁。
MainActivity 示例
包含生命周期日志记录的最小活动:
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
private val TAG = "MainActivity"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Log.d(TAG, "onCreate")
}
override fun onResume() {
super.onResume()
Log.d(TAG, "onResume — user is here")
}
override fun onPause() {
super.onPause()
Log.d(TAG, "onPause — saving state")
}
override fun onDestroy() {
super.onDestroy()
Log.d(TAG, "onDestroy")
}
}为什么生命周期很重要
忽略生命周期可能导致以下常见错误:
- 在
onResume中播放视频,却忘记在onPause中暂停视频——耗尽电池电量 - 在
onCreate中注册传感器监听器,却没有在onDestroy中注销——造成内存泄漏 - 没有在
onPause中保存表单数据——用户接听电话时会丢失进度
保存状态:onSaveInstanceState
当用户旋转手机时,活动会被销毁并重新创建。您的界面状态会丢失。
请在 onSaveInstanceState(bundle) 中保存临时状态,并在 onCreate(savedInstanceState) 中恢复。
保存与恢复状态
在配置发生变化时保留数据:
class CounterActivity : AppCompatActivity() {
private var count = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_counter)
// Restore saved state after rotation
count = savedInstanceState?.getInt("count") ?: 0
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt("count", count)
}
}返回栈
Android 会管理活动的返回栈:
- 启动新活动时,会将其压入栈中
- 按下返回键时,会弹出栈顶活动并将其销毁
- 之前的活动会自动恢复
因此,除非您确实想要从返回栈中移除当前屏幕,否则不应手动调用 finish()。
配置变化
默认情况下,任何配置变化(旋转屏幕、切换语言、连接键盘)都会重新创建活动。
现代的解决方案是使用 ViewModel——它可以在配置变化后继续存在,并安全地保存您的数据。您将在架构模块中学习 ViewModel。
快速检查
您应在哪个生命周期方法中设置布局(调用 setContentView)?
回顾:活动与生命周期
现在您已经了解 Android 活动:
- 一个活动 = 应用中的一个屏幕
- 生命周期:onCreate → onStart → onResume → onPause → onStop → onDestroy
- 在
onSaveInstanceState中保存临时状态 - 旋转屏幕会销毁并重新创建活动
- Android 会自动管理返回栈
下一步:使用布局和视图设计屏幕。
常见问题解答
「Activity 与生命周期」课时是免费的吗?
是的 — 「Activity 与生命周期」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Android Academy 课程的其余内容,请升级到 CoddyKit PRO。 Android Academy 课程共包含 7 节课。
「Activity 与生命周期」这节课中我会学到什么?
了解 Activity 的含义,理解 Activity 生命周期回调(onCreate、onStart、onResume、onPause、onStop、onDestroy),并使用 ViewBinding。 你通过在浏览器中直接运行的动手代码来练习 Android Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Android Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Android Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 7 节。
「Activity 与生命周期」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Android Academy 课中编写并运行代码吗?
能。每节 Android Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。