在MVVM Android中使用Shared Preferences的最佳实践?

9

我一直在寻找在Android MVVM架构中使用Shared Preferences的最佳方法,但我只能找到一些零散的片段,因此没有清晰的思路来以最佳方式完成它。因此,我有几个问题:

  1. 我应该在整个应用程序中保持SharedPrefs的单例实例吗?
  2. ViewModel和Repository应该使用Shared Preferences吗?
  3. 在哪里使用它们?假设有一个Fragment、一个ViewModel和一个Repository。应该从ViewModel控制SharedPrefs的Fragment和Repository,还是应该让各自负责?例如:用户点击按钮保存设置。从Fragment在SP中保存?从ViewModel调用方法保存到SP?或者进一步重定向到Repository使用SP?

(*SP = Shared Preferences)

我真的很希望能得到有关MVVM Android中SharePreferences的最佳实践建议。

1个回答

4

enter image description here

这个图表非常好地展示了MVVM结构。在您的情况下,您想将一些数据保存在本地数据源中,例如数据库或共享首选项,因此建议您使用存储库级别的逻辑来进行保存并从ViewModel调用这些函数。
如果您使用相同的共享首选项引用,则最好将其用作单例,而不是每次读取或写入时都创建它。

然而,如果我没有仓库(不使用数据库),而只是使用共享首选项,则应该从ViewModel更新共享首选项,而不是从Fragment。对吗? - radus14
5
由于共享首选项是您项目中的本地数据源,因此应将其视为数据库,并且必须使用存储库才能使用其功能。当用户要保存数据时,您需要从片段调用ViewModel中的保存函数,您的ViewModel将调用存储库函数,而存储库应调用您为在共享首选项中保存对象创建的单例或其他类。 - Alireza Mahfouzian
好的,但要获取sharedPreferences,您需要Context,而Repository没有Context。您如何将Context传递到您的Repository中(它是一个单例对象,对吗?),或者您如何在没有Context的情况下获取sharedPreferences? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接