kotlin-android-viewModelScope in singleton viewmodel

问题描述 投票:0回答:1

我的应用程序使用MVVM模式,并且希望对协程使用viewmodelscope,现在我面临与viewmodelscope相关的一些问题

在应用程序中,有两个片段,每个片段都有一个视图模型。从片段1导​​航到片段2,在第二个片段,用户将访问API。如果响应为假,则用户将再次返回第一个片段,并需要修正其输入。然后用户可以再次导航以分割两个片段并再次点击API。

问题是第二次尝试,应用程序无法使用该API,因为协程已在第一次尝试时在视图模型的ondestroy状态下被取消(由于视图模型自身CMIIW的行为,它已自动取消)。而且由于我使所有viewmodel单身,所以我猜在第二次尝试时,被取消的viewmodelscope再次被调用并且不能运行协程(因为它在第一次尝试中已被取消)。

我的问题是,如果我继续对视图模型使用单例,是否还有其他方法可以在第二次尝试中重置viewmodelscope,使其可以再次运行以命中API?

android kotlin mvvm viewmodel dagger-2
1个回答
0
投票
    我建议您将单个ViewModel用于您的Activity,然后此Activity中的所有片段都将共享它,这就是Google发明ViewModel的原因。
  1. 此viewModel将遵循Activity的LifeCycle,您无需使其成为单例,只需在Activity.onCreate()中获取它。
© www.soinside.com 2019 - 2024. All rights reserved.