我们可以在单个活动中添加多个ViewModel.observer()方法

时间:2018-05-22 09:37:43

标签: android android-architecture-components android-livedata android-mvvm

我有一项执行多项后台任务的活动,例如:

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 个答案:

答案 0 :(得分:1)

我想,你不应该!

您不需要单独观察这些更改。

你可以这样做:

  • 制作包含所有这些数据的ViewState数据模型类(jwt标记,其他布尔值和所有数据)

  • 根据活动中的此模型观察ViewModel。

  • 在ViewModel中,您也可以使用LiveData.postValue()更改/更新这些ViewState模型值。