关于kotlin:kotlin-android-单身viewmodel中的viewModelScope

kotlin - android - viewModelScope in singleton viewmodel

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

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

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

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


  • 我建议您为Activity使用单个ViewModel,然后此Activity中的所有片段都将共享它,这就是Google发明ViewModel的原因。
  • 此viewModel将遵循Activity的LifeCycle,您无需使其成为单例,只需在Activity.onCreate()中获取它即可。