Hilt 与 Compose:获取 ViewModel · AndroidX 源码指南
AAndroidX 源码指南
Hilt
依赖注入 · androidx.hilt

Hilt 与 Compose:获取 ViewModel1.4.0-rc01

hiltViewModel 的用法、包位置演进,以及 Navigation 中的作用域。

最后更新 2026-08-01

复制即用

依赖:

implementation("androidx.hilt:hilt-lifecycle-viewmodel-compose:1.3.0")
implementation("androidx.hilt:hilt-navigation-compose:1.4.0-rc01")

Compose 中获取:

import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel

@Composable
fun MainScreen(
    viewModel: MainViewModel = hiltViewModel(),
) {
    val state by viewModel.state.collectAsStateWithLifecycle()
    // UI
}

带 key 的获取(同一类型多个实例):

val a: ItemViewModel = hiltViewModel(key = "item-a")
val b: ItemViewModel = hiltViewModel(key = "item-b")

要点

  • hiltViewModel当前包androidx.hilt.lifecycle.viewmodel.compose
  • 旧包 androidx.hilt.navigation.compose.hiltViewModel 已标记 Deprecated,编译器会提示迁移。
  • ViewModel 默认作用域到当前的 ViewModelStoreOwner(Activity/导航图/Fragment)。
  • 在 Navigation3 的 NavDisplay 中,用 rememberViewModelStoreNavEntryDecorator() 让每个 entry 有独立的 ViewModel 作用域。

On this page