Reputation: 2342
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
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