BVt*_*Vtp 14 singleton android mvvm 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.
Run Code Online (Sandbox Code Playgroud)
对于情况 1:最简单的方法是使用某种单例 "DataManager/LoginManger" ,但单例很糟糕(测试,随着时间的推移状态不可预测......)另一种方法是使用 Application 类,这也是坏的。
那么我们在哪里存储这些数据呢?
对于案例 2:一个简单的存储库,其中包含对 Retrofit 客户端或其他客户端的引用。
使用它作为单例更有意义,因为这个类是不可变的/无状态的。我们只想创建一次改造客户端。但是.. 测试?
3 . 另外,如果我们想获取 location 怎么办?我们可以在 ViewModel 中使用 LiveData 来负责。但是 ViewModel 的范围是某个视图/活动。所以这意味着如果我们更改视图(例如从抽屉中输入设置,而主页的视图模型正在获取位置),一旦检索到位置数据,我们将丢失位置数据,然后当用户返回主页时,我们不仅要向他们显示位置,还必须重新请求位置。
我还没有找到任何方式来处理所有这些情况。似乎没有明确的答案。
| 归档时间: |
|
| 查看次数: |
509 次 |
| 最近记录: |