Можем ли мы добавить несколько методов ViewModel.observer() в одном действии

У меня есть действие, которое выполняет несколько фоновых задач, например:

getJWTToken(), sendFCMTokenToServer(), isPromoAvailable(), isForcedUpgradeRequired(), fetchNewsFromServer(), sendUserLatLngToServer()

Все это сетевые вызовы и занимают некоторое время.

Это то, что я сделал для 1 метода.

HomeViewModel homeViewModel = ViewModelProviders.of(this).get(HomeViewModel.class); 


    homeViewModel.sendFCMTokenToServer().observe(this, isFCMSendToServer -> {
       Toast.makeText(this, "Home FCM Observer called", Toast.LENGTH_SHORT).show();
     });

Теперь мой вопрос: мне нужно повторить приведенную выше строку homeViewModel.observer(this, ) для каждого метода, или есть какой-то другой способ достижения этого.

1 ответ

Я думаю, вы не должны!

Вам не нужно наблюдать за этими изменениями отдельно.

Вы можете сделать это:

  • make ViewState Класс модели данных, который содержит все эти данные (токен jwt, другие логические значения и все)

  • наблюдать ViewModel на основе этой модели из деятельности.

  • В ViewModel вы можете просто изменить / обновить эти значения модели ViewState, используя LiveData.postValue().

Другие вопросы по тегам