Skip to content

android-activity-lifecycle-compose

1. 实验目标

用最小 Compose Activity 验证两层生命周期:

  • Activity:onCreate / onStart / onResume / onPause / onStop / onDestroy
  • Compose:DisposableEffect 进入与退出组合树

并观察:

  • Compose UI 重组不等于 Activity 重建
  • 页面 push / pop 时 Activity 与 Compose 各自的销毁时机
  • 为什么 Compose 的状态重组与宿主生命周期必须分开理解

2. 工程要点

  • ComponentActivity + Material3
  • Activity 侧维护生命周期日志
  • Compose 侧用 DisposableEffect 追加 enter/leave composition 日志
  • 点击按钮打开详情页,观察主页面进出前台的日志变化

3. 运行方式

bash
cd labs/android/host
./gradlew installDebug

前置:JDK 17、Android SDK(local.propertiesANDROID_HOME)、已连接设备。详见 host Android Host — Lab 索引

打开 Android Host,进入 Android Activity Lifecycle (Compose)

4. 预期现象

  • 首次进入:Activity 先 onCreate/onStart/onResume
  • Compose 页面进入组合树时出现 compose:enter
  • 打开详情页后主页面 onPause/onStop
  • 返回时主页面 onRestart/onStart/onResume
  • 最终销毁时出现 compose:leave composition 与 Activity 销毁日志

5. 常见误区

误区实际情况
Compose recompose 就等于 Activity 重建错。重组通常只发生在组合树内部
DisposableEffect 可以替代 Activity 生命周期不行。它只覆盖组合树进入/退出,不等于宿主前后台
Compose 页面就不需要理解 onResume/onPause错。宿主生命周期依然决定权限、相机、定位、前后台行为

6. 对应知识库文档

7. 关键源码