我有一个活动,我将其命名为MainActivity。为此,我创建了一个名为MainViewModel的ViewModel。
在此活动中,我进行了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
});
}
现在我想知道是否有更好的方法可以执行此方法?因为我必须在几次活动中执行此方案
答案 0 :(得分:3)
如果您要基于 ViewModel体系结构,最好在视图模型中包含有关请求,网络和数据事物的所有信息。因此,您示例中的所有逻辑都应在 viewModel 中。您应该只观察最终结果,除非您要在UI上显示部分结果。