侧边栏壁纸
博主头像
colo

欲买桂花同载酒

  • 累计撰写 1823 篇文章
  • 累计收到 0 条评论

Activity 生命周期方法调用顺序

2025-12-12 / 0 评论 / 2 阅读

题目

Activity 生命周期方法调用顺序

信息

  • 类型:问答
  • 难度:⭐

考点

Activity生命周期, onCreate, onStart, onResume, 方法调用顺序

快速回答

当用户打开一个新 Activity 时,系统会按以下顺序调用生命周期方法:

  1. onCreate() - 初始化基本组件
  2. onStart() - Activity 可见但未交互
  3. onResume() - Activity 进入前台可交互状态
## 解析

原理说明

Activity 生命周期是 Android 框架管理应用组件的核心机制。当用户启动新 Activity 时,系统按固定顺序回调方法,开发者可在对应方法中执行初始化、资源释放等操作。

调用顺序详解

  1. onCreate()
    • 首次创建 Activity 时调用
    • 必须在此初始化核心组件(如设置布局)
    • 接收保存的实例状态(savedInstanceState)
  2. onStart()
    • Activity 对用户可见(但未获得焦点)
    • 适合启动界面刷新等操作
  3. 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() 保存临时数据
  • 现代开发推荐使用 LifecycleOwnerLifecycleObserver 解耦生命周期处理