在没有实时数据的情况下使用 ViewModel 可以吗

Posted

技术标签:

【中文标题】在没有实时数据的情况下使用 ViewModel 可以吗【英文标题】:Is it Fine to use ViewModel without Live Data 【发布时间】:2018-11-02 03:16:51 【问题描述】:

我在androidViewModel 类中使用LiveData,我需要等待响应,但在某些情况下我需要检查本地shared preference 的一些值,这不会阻塞任何线程。

对于这些场景,我没有使用LiveData。这就是我在activity class 中所做的事情。

 homeViewModel.sendTokenToServer().observe(this, isFCMSendToServer -> 
        Toast.makeText(this, "FCM Token Observer called", Toast.LENGTH_SHORT).show();
 );


//Without Live Data

if(homeViewModel.isUpgradeAvailable())
     displayAlertMessage();

我想知道上述方法是否可以,或者我们必须为ViewModel中的每个方法使用LiveData或其他一些观察者

【问题讨论】:

LiveData 可以是同步和异步调用的一部分。无需切换到典型的侦听器模式。 【参考方案1】:

AFAIK ViewModelLiveData 没有紧密连接。因此,您没有义务使用任何观察者。例如在this 示例应用程序中,ViewModel 用于通过方向更改保留一些数字。因此ViewModel 用作一个容器(类似于无头片段),您可以在其中存储要通过方向更改保留的数据。

【讨论】:

以上是关于在没有实时数据的情况下使用 ViewModel 可以吗的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有代码隐藏的情况下处理 ViewModel 中的 WPF 路由命令?

SwiftUI 如何在不使用 List 的情况下从 @ObservedObject ViewModel 获取 Firebase 数据

我可以在没有实时数据库的情况下访问 Firebase 存储吗

如何使用地图标记列表创建实时搜索淘汰赛?

为啥 ViewModel 应该实现 INotifyPropertyChanged?

Fragment间实时传递数据 - 使用ViewModel