ComponentActivity:能力宿主 · AndroidX 源码指南
AAndroidX 源码指南
Activity
应用基础 · androidx.activity

ComponentActivity:能力宿主1.14.0-alpha01

看懂 ComponentActivity 为什么同时实现多个 AndroidX owner 接口。

最后更新 2026-07-31

先看类型声明

源码中的 ComponentActivity 继承平台 Activity,同时实现 LifecycleOwnerViewModelStoreOwnerSavedStateRegistryOwnerActivityResultRegistryOwnerOnBackPressedDispatcherOwner 等接口。

这意味着下游库不需要认识你的具体 Activity,只要读取对应 owner 就能工作。

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContent { App() }
    }
}

ComponentActivity 是宿主,不等于 UI。View 项目可以调用 setContentView,Compose 项目通过 activity-composesetContent 安装 Composition。

初始化顺序为什么重要

构造期间会建立 Lifecycle、SavedState、Activity Result 和 back dispatcher 等基础设施;真正的恢复与 UI 创建仍跟随 Activity 生命周期。自定义宿主时不要绕开 super.onCreate(),也不要手动复制这些内部连接。

什么时候直接使用

  • 单 Activity Compose 应用:直接作为根宿主。
  • View/Fragment 应用:通常由 AppCompatActivity 间接获得这些能力。
  • 自定义 Dialog:源码还提供实现相似 owner 的 ComponentDialog