题目
Activity 生命周期方法调用顺序
信息
- 类型:问答
- 难度:⭐
考点
Activity生命周期, onCreate, onStart, onResume, 方法调用顺序
快速回答
当用户打开一个新 Activity 时,系统会按以下顺序调用生命周期方法:
onCreate()- 初始化基本组件onStart()- Activity 可见但未交互onResume()- Activity 进入前台可交互状态
原理说明
Activity 生命周期是 Android 框架管理应用组件的核心机制。当用户启动新 Activity 时,系统按固定顺序回调方法,开发者可在对应方法中执行初始化、资源释放等操作。
调用顺序详解
- onCreate():
- 首次创建 Activity 时调用
- 必须在此初始化核心组件(如设置布局)
- 接收保存的实例状态(savedInstanceState)
- onStart():
- Activity 对用户可见(但未获得焦点)
- 适合启动界面刷新等操作
- onResume():
- Activity 进入前台并可与用户交互
- 通常在此注册传感器、摄像头等独占资源
代码示例
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) // 必须调用
Log.d("Lifecycle", "onCreate called")
}
override fun onStart() {
super.onStart()
Log.d("Lifecycle", "onStart called")
}
override fun onResume() {
super.onResume()
Log.d("Lifecycle", "onResume called")
}
}最佳实践
- 在
onCreate()中完成耗时初始化会导致启动卡顿,应使用后台线程 onResume()和onPause()必须成对处理资源申请/释放- 避免在
onStart()/onStop()中执行重量级操作
常见错误
- 忘记调用
super.onCreate()等父类方法(导致崩溃) - 在
onCreate()中直接进行网络请求(应使用 ViewModel) - 未在
onPause()释放onResume()中申请的资源(如摄像头)
扩展知识
- 完整生命周期链:onCreate → onStart → onResume → onPause → onStop → onDestroy
- 横竖屏旋转时:系统会销毁并重建 Activity,可通过
onSaveInstanceState()保存临时数据 - 现代开发推荐使用
LifecycleOwner和LifecycleObserver解耦生命周期处理