在 MVVM 中,谁的工作是决定导航流?视图模型还是视图?

Arc*_*nes 5 android mvvm android-viewmodel android-architecture-components android-jetpack

在 Android 上下文中,当收到响应时,决策点是否应该在 ViewModel 中,类似于我的 ViewModel:

if (response.isSuccess()) {
    nextScreenLiveData.value = GO_TO_NEXT_SCREEN
} else if(response.isNeedAnotherScreen()) {
    anotherScreenLiveData.value = ANOTHER_SCREEN
} else {
    backToBeforeScreen = BACK_TO_BEFORE_SCREEN
}
Run Code Online (Sandbox Code Playgroud)

然后所有这些 LiveData 将在 Activity/Fragment 中被观察到。意味着每个 LiveData 有一个观察者。

或者最好在我的 ViewModel 中做这样的事情:

liveData.value = response
Run Code Online (Sandbox Code Playgroud)

然后在我的活动/片段中做出决定:

liveData.observe(this, Observer { response ->
   if (response.isSuccess()) {
        goToNextScreen()
    } else if(response.isNeedAnotherScreen()) {
        goToAnotherScreen()
    } else {
        goBack()
    }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢。