在哪里保存 Android 的 MVVM 中的 ViewModel 状态?

生锈1996

作为 Android 开发的初学者,我试图通过将我的第一个应用程序转换为推荐的 MVVM 结构来清理我的代码库。我目前坚持的是,试图找出存储我的视图模型状态的最佳方式。

在这个例子中,我需要存储的状态只是一个字符串的 ArrayList(指示选中了 recyclerview 中的哪些复选框)。我目前将此 ArrayList 作为字段存储在我的 ViewModel 中,包装在我的活动观察的 MutableLivedata 对象中。从长远来看,这种将 ViewModel 状态存储为字段的方法似乎并不可行。我可以想象随着我的应用程序的增长,我的 ViewModel 类会变得非常臃肿和凌乱。

我目前使用 Firebase 实时数据库来存储我需要持久化的数据,就像 Android 架构推荐的那样通过存储库访问。然而,我的 ViewModel 的状态在应用程序关闭后不需要保留,因此为它对我的 Firebase 数据库进行网络调用绝对没有意义。

我的问题是:在哪里保存 ViewModel 的状态最有意义?我在我面前看到的半明智的选择是将它保存为我的 ViewModel 类中的字段(我当前的方法),将其保存在 Room 数据库中(并在每次应用程序被杀死时重置数据库),或将其保存为字段在我的存储库类中(似乎不对)。我愿意接受建议!

哈坎·巴奇

这取决于您的需求:

  • 如果您只想为配置更改保留状态,则无需再执行任何操作。ViewModel 会为您处理。
  • 如果您想在关闭屏幕后返回该屏幕时看到相同的状态,那么我建议您使用本地缓存解决方案,例如 Room。您可以在房间顶部创建一个存储库并将其注入您的 Viewmodel。
  • 如果您想在应用程序关闭之前保持状态,您还可以创建一个内存存储库(具有状态的单例存储库)。当应用程序被杀死时,该内存将被操作系统回收,以便它们将被清除。

无论如何,远程存储数据似乎不是您正在寻找的解决方案。

由于 Android 系统内存回收情况,我也不会依赖内存缓存解决方案。

您可以使用缓存解决方案,并在再次打开应用程序时清除缓存。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Redux中,状态实际存储在哪里?

ViewModel中的不可观察模型对象是否针对Android中的MVVM体系结构?

如何在Android MVVM ViewModel中获取上下文

Android-MVVM中ViewModel状态的最佳做法?

在Android MVVM体系结构中从ViewModel显示对话框

在Android MVVM体系结构中从ViewModel显示对话框

Android MVVM中的服务和ViewModel-它们如何交互?

在MVVM架构中从ViewModel添加片段

Android的ViewModel和MVVM

Android Studio 3中的“活动管理器状态”在哪里?

如何使用Android导航而不绑定到ViewModel(MVVM)中的UI?

如何在MVVM Android中使用数据绑定处理ViewModel中的onClick或onTouch之类的事件

Android MVVM在哪里存储数据?

android viewmodel在哪个线程中运行?

无法在Android MVVM中创建ViewModel类的实例

MVVM中StateFlow的多状态

如何通过VIEWMODEL从数据库(MODEL)中的Activity(VIEW)获取添加的对象的ID。Android,MVVM

在WPF MVVM中的ViewModel中设置SelectedTab

从MVVM中的ViewModel关闭视图

保存的文件存储在哪里?在Android中

MVVM中的“有状态”在有状态ViewModel中是什么意思

MVVM RaisePropertyChanged已在ViewModel或Model中更改?

MVVM设计:在ViewModel中阻止MessageBox

MVVM中的代码繁重的ViewModel

Android Fragments-在哪里保存状态(带有自定义对象的链表)?

mvvm中的Android ViewModel管理

XMonad 状态保存在哪里

为 SettingsActivity 获取 ViewModel(MVVM,Android P)

Android、MVVM:在 ViewModel 中調用 ContentResolver