我的应用程序使用 MVVM 模式,想要使用 viewmodelscope 作为协程,现在我面临一些与 viewmodelscope 相关的问题
在应用程序中,有两个 fragment ,每个 fragment 都有一个 View 模型。从 fragment 一导航到 fragment 二,在第二个 fragment 处,用户将点击 API。如果响应为 false,用户将再次返回到第一个 fragment 并需要修复他们的输入。然后用户可以再次导航到 fragment 二并再次点击 API。
问题在于第二次尝试时,应用程序无法访问 API,因为第一次尝试时协程已在 viewmodel 中的 ondestroy 状态下被取消(它会自动取消,因为这是 viewmodelscope 本身 CMIIW 的行为)。由于我将所有 viewmodel 设置为单例,所以我猜想在第二次尝试时,已取消的 viewmodelscope 会再次被调用并且无法运行协程(因为它在第一次尝试中已被取消)。
我的问题是,如果我继续使用 viewmodel 的单例,是否有其他方法可以在第二次尝试中重置 viewmodelscope,以便它可以再次运行以访问 API?
最佳答案
- 我建议你为你的Activity使用单个ViewModel,然后这个Activity中的所有fragment都会共享它,这就是Google发明ViewModel的原因。
- 这个viewModel会遵循Activity的LifeCycle,你不需要将其设置为单例,只需在Activity.onCreate()中获取它即可。
关于android - kotlin - android - 单例 View 模型中的 viewModelScope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60768691/