hosseinAmini
hosseinAmini

Reputation: 2342

Is it good idea to have multiple ViewModel.observe in a single Activity?

I have an activity that I named it MainActivity. For this activity I have created a ViewModel that its name is MainViewModel.
In this activity I have 3 network calling and I have created 3 observers for them in MainViewModel. First I call first request, when this request is successful I'll call second request and when this is successful too I'll call third request.

My code is something look likes this:

...
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
    });

}

Now I wanna know is there any better way for doing this approach? Because I have to do this scenario in several activities

Upvotes: 3

Views: 1679

Answers (1)

mmmatey
mmmatey

Reputation: 684

If you want to relay on ViewModel architecture, is better to have everything regarding requests, network and data things in view models. So all this logic from your example should be in viewModel. You should just observe final result, except if you want to show on UI also partial results.

Upvotes: 4

Related Questions