Activity
应用基础 · androidx.activity
ComponentActivity:能力宿主1.14.0-alpha01
看懂 ComponentActivity 为什么同时实现多个 AndroidX owner 接口。
最后更新 2026-07-31
先看类型声明
源码中的 ComponentActivity 继承平台 Activity,同时实现 LifecycleOwner、ViewModelStoreOwner、SavedStateRegistryOwner、ActivityResultRegistryOwner、OnBackPressedDispatcherOwner 等接口。
这意味着下游库不需要认识你的具体 Activity,只要读取对应 owner 就能工作。
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent { App() }
}
}ComponentActivity 是宿主,不等于 UI。View 项目可以调用 setContentView,Compose 项目通过 activity-compose 的 setContent 安装 Composition。
初始化顺序为什么重要
构造期间会建立 Lifecycle、SavedState、Activity Result 和 back dispatcher 等基础设施;真正的恢复与 UI 创建仍跟随 Activity 生命周期。自定义宿主时不要绕开 super.onCreate(),也不要手动复制这些内部连接。
什么时候直接使用
- 单 Activity Compose 应用:直接作为根宿主。
- View/Fragment 应用:通常由
AppCompatActivity间接获得这些能力。 - 自定义 Dialog:源码还提供实现相似 owner 的
ComponentDialog。