在Android中使用MVVM架构在哪里存储/管理会话和全局/无状态数据?

时间:2019-03-18 12:44:58

标签: android mvvm singleton android-livedata

两种情况:

1. Session data - For example the logged in User details, or some other session data.
2. Global/stateless data - A repository with retrofit client. 

案例1 : 最简单的方法是使用某种单例,即“ DataManager / LoginManger”,但单例很糟糕(随着时间的推移,测试,不可预测的状态...) 另一种方法是使用Application类,这也是不好的。

那么我们将数据存储在哪里?

案例2 : 一个简单的存储库,其中包含对Retrofit客户端或其他客户端的引用。
将其作为单例使用更有意义,因为此类将是不可变的/无状态的。我们只想创建一个改造客户一次。 但是..测试吗?

3 。另外,如果我们要获取位置怎么办?    我们可以在ViewModel中使用一个LiveData来负责。但是ViewModel的作用域是某个View / Activity。因此,这意味着如果我们更改视图(例如,在主页的viewmodel正在获取位置的同时从抽屉输入设置),则一旦检索到位置数据,然后当用户返回主页时,我们将丢失位置数据,而不是仅仅向他们显示位置,我们将不得不再次请求该位置。

我还没有找到可以解决所有这些情况的方法。似乎没有明确的答案。

0 个答案:

没有答案