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 作用域。