cluster1 Asked: 2024-04-20 16:16:48 +0800 CST2024-04-20 16:16:48 +0800 CST 2024-04-20 16:16:48 +0800 CST Jetpack Compose:“by viewModels()”与“viewModel<ViewModelName>()” 772 这里有什么区别? val myViewModel: MyViewModel by viewModels() 相对 val myViewModel = viewModel<MyViewModel>() 第一种方式如何运作?它如何知道要初始化哪个ViewModel?来自变量名后面的类型注释? 2 个回答 Voted Yakubu 2024-04-20T16:29:02+08:002024-04-20T16:29:02+08:00 主要区别在于它们所针对的背景和框架: 第一种方法 val myViewModel: MyViewModel by viewModels() (通过 viewModels())主要用于传统 UI 开发(带有 XML 布局的 Activity/Fragments), 而第二个 (viewModel()) 在 Jetpack Compose 中使用。 val myViewModel = viewModel<MyViewModel>() 您可以在此处阅读更多Android viewmodel Best Answer Meet 2024-04-20T16:36:14+08:002024-04-20T16:36:14+08:00 在使用 Kotlin 的 Android 开发中,有两种常见的方法可以在 ViewModel 支持的片段或活动中初始化 ViewModel:by viewModels()以及viewModel()Android Jetpack 库提供的函数。 by viewModels() 此方法通常与 Kotlin 属性委托一起使用。 它会自动初始化与给定片段或活动关联的 ViewModel,并在配置更改时保留它。 ViewModel 的类型是从属性的类型推断出来的。 此方法简洁,出于简单和简洁的考虑通常是首选方法。 viewModel() viewModel-ktx这种方法是Android Jetpack中的库提供的功能。 您显式指定要检索的 ViewModel 的类型。 它允许显式指定 ViewModel 类。 当您需要检索与属性类型不同的 ViewModel 时很有用。
主要区别在于它们所针对的背景和框架:
而第二个 (viewModel()) 在 Jetpack Compose 中使用。
您可以在此处阅读更多Android viewmodel
在使用 Kotlin 的 Android 开发中,有两种常见的方法可以在 ViewModel 支持的片段或活动中初始化 ViewModel:
by viewModels()
以及viewModel()
Android Jetpack 库提供的函数。by viewModels()
viewModel()
viewModel-ktx
这种方法是Android Jetpack中的库提供的功能。