android - Jetpack Compose 导航组件可以使用多少个 ViewModel?

标签 android android-jetpack-compose jetpack-compose-navigation

使用 Jetpack Compose 导航时,是对所有屏幕使用一个 ViewModel 还是对每个屏幕使用一个 ViewModel?有这方面的架构指导吗?如果要使用多个 ViewModel,那么将在哪里实例化它们?

最佳答案

在软件架构设计方面,我不是专业人士,但我认为这完全取决于您的应用程序的结构。 Compose 基本上是一个 UI 框架,它不能替代 ViewModel。这意味着您仍然可以以任何您认为合适的方式进行操作。
例如,如果您有多个不同的屏幕(即登录、主页、设置等),您最好为每个屏幕使用单独的 ViewModel。如果您有一个非常简单的单页浏览器,则可以使用单个 ViewModel。
official docs关于如何构建您的应用程序有一个很好的描述。您显然应该进行任何必要的调整,以使架构适合您的项目需求和目标。
至于实例化部分,可以关注suggested (no D.I.) way , IE。:

class ExampleViewModel : ViewModel() { /*...*/ }

@Composable
fun MyExample(
    viewModel: ExampleViewModel = viewModel()
) {
    // use viewModel here
}
或者您可以(并且可能应该)使用 D.I.库,例如 HiltKoin .

关于android - Jetpack Compose 导航组件可以使用多少个 ViewModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71629958/

相关文章:

java - 提交给执行者的 FutureTask 不运行

java - MPAndroid图表组合图表不显示数据

java - 不知道如何摆脱 NaN

android - 在compose中,为什么修改List元素的属性,LazyColumn不刷新

android - 无法使用导航和 Jetpack 组合弹出起始目的地

android - 如何使用 Jetpack Compose + Navigation 处理后退导航(无 fragment )

java - 可以在 Android VKB 上的 CodenameOne 中切换下一步/结束按钮

android - 如何在 Jetpack Compose 中将 NavigationRail 的内容居中(menuGravity 缺失)

android - 如何将图像添加到 jetpack compose/kotlin 中的按钮

android - Jetpack 撰写单行输入文本