Android MVVM,单一 Activity 架构,什么是最好的 class 来存储数据

Android MVVM, Single Activity Architecture, What is the best class to store data

在 Android 中使用 MVVM 模式和 SingleActivityArchitecture 时,什么是最好的 class 来存储随处使用的数据?

我的架构是:

SplashFragment(SplashViewModel)───-┌──> MainActivity(MainViewModel)  
LoginFragment(LoginViewModel)───--─┤  
HomeFragment(HomeViewModel)  ───---┘  

And, All viewmodels depend on a repository using for request remote data.

例如

  1. 用户使用 LoginViewModel 的函数在 LoginFragment 上登录。
  2. 将登录进度返回的数据存储在CLASS X
  3. 搬回家
  4. HomeViewModel 使用 CLASS X
  5. 中的数据请求远程数据源

对于 X,什么是最好的 class?存储库?主视图模型?新单例 class?

一种方法是使用共享数据库(我个人使用Realm

在您的示例中,它将像这样工作:

  1. 用户登录,LoginViewModel打开Realm数据库并存储访问令牌等
  2. 每当另一个片段或服务需要此数据时,它只需打开数据库并获取它。

使用单例 class 也是一种选择,但是这样做的缺点之一是它不会在应用程序重新启动之间持续存在。

您还应该注意使用单例模式的各种优缺点,如 here 所述。

另一个更新的选择是将视图模型的范围限定为 activity 或导航图而不是片段,如 here 所述。