在单个 Activity 中包含多个 ViewModel.observe 是个好主意吗?
Is it good idea to have multiple ViewModel.observe in a single Activity?
我有一个 activity 并将其命名为 MainActivity。为此 activity 我创建了一个名为 MainViewModel 的 ViewModel。
在这个 activity 中,我有 3 个网络调用,我在 MainViewModel 中为它们创建了 3 个观察者。首先我调用第一个请求,当这个请求成功时我会调用第二个请求,当这也成功时我会调用第三个请求。
我的代码是这样的:
...
private MainViewModel viewModel;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
...
viewModel.doRequestOne();
viewModel.requestOne.observe(this, result -> {
// check if it is success, then call doRequestTwo()
viewModel.doRequestTwo();
});
viewModel.requestTwo.observe(this, result -> {
// check if it is success then call doRequestThree()
viewModel.doRequestThree();
});;
viewModel.requestThree.observe(this, result -> {
// Success
});
}
现在我想知道有没有更好的方法来实现这种方法?因为我必须在几个活动中做这个场景
如果您想在 ViewModel 架构 上进行中继,最好在视图模型中包含有关请求、网络和数据的所有内容。因此,您示例中的所有这些逻辑都应该在 viewModel 中。您应该只观察最终结果,除非您还想在 UI 上显示部分结果。
我有一个 activity 并将其命名为 MainActivity。为此 activity 我创建了一个名为 MainViewModel 的 ViewModel。
在这个 activity 中,我有 3 个网络调用,我在 MainViewModel 中为它们创建了 3 个观察者。首先我调用第一个请求,当这个请求成功时我会调用第二个请求,当这也成功时我会调用第三个请求。
我的代码是这样的:
...
private MainViewModel viewModel;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
...
viewModel.doRequestOne();
viewModel.requestOne.observe(this, result -> {
// check if it is success, then call doRequestTwo()
viewModel.doRequestTwo();
});
viewModel.requestTwo.observe(this, result -> {
// check if it is success then call doRequestThree()
viewModel.doRequestThree();
});;
viewModel.requestThree.observe(this, result -> {
// Success
});
}
现在我想知道有没有更好的方法来实现这种方法?因为我必须在几个活动中做这个场景
如果您想在 ViewModel 架构 上进行中继,最好在视图模型中包含有关请求、网络和数据的所有内容。因此,您示例中的所有这些逻辑都应该在 viewModel 中。您应该只观察最终结果,除非您还想在 UI 上显示部分结果。