在一个Activity中拥有多个ViewModel.observe是个好主意吗?

时间:2018-10-09 10:57:53

标签: android android-architecture-components observers

我有一个活动,我将其命名为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
    });

}

现在我想知道是否有更好的方法可以执行此方法?因为我必须在几次活动中执行此方案

1 个答案:

答案 0 :(得分:3)

如果您要基于 ViewModel体系结构,最好在视图模型中包含有关请求,网络和数据事物的所有信息。因此,您示例中的所有逻辑都应在 viewModel 中。您应该只观察最终结果,除非您要在UI上显示部分结果。

相关问题