Android MVP 持久化

Mit*_*tch 6 mvp android

我正在尝试按照 android 蓝图指南将 MVP 模式实施到我的项目中。目前,我在 Presenter 中保存用户(实体数据),我真的不喜欢它,因为在每次配置更改时,Presenter 都会从数据库中获取用户。

我的第一个问题是:

  • 我应该将我的数据保存在存储库中(因为我使用的是 dagger 2 并且存储库位于应用程序范围内)还是我应该将它保存在演示者中并以某种方式将其保存在那里。我个人希望将其保留在演示者中,但是,我正在尝试以传统方式学习。

我也知道 android 架构组件,尤其是 ViewModel,但是,我想保留 MVP 模式而不是 MVVM。

我的第二个问题是:

  • 实现持久化后,我应该如何将 LiveData 与 MVP 一起使用?

我已经被这个问题困住了很长一段时间,很想最终解决它。

干杯

Sho*_*uri 6

我应该将我的数据保存在 Repository 中还是应该将它保存在 Presenter 中并以某种方式将其保存在那里?

你有一个有趣的问题,当我开始与 MVP 合作时,我也曾遇到过这个问题。这是我的 2 美分:

一直在继续讨论你提到的两个选项。我个人更喜欢存储库模式。它更干净 IMO,并且当请求已经在飞行时处理屏幕旋转等情况变得更容易。此外,每次设备旋转时,您都不需要从数据库中获取。如果您认为这很昂贵,也许您可​​以在 db 之前创建一个缓存级别。有一个很有趣的和详细的文章:主讲人是不是坚持麦克Nakhimovich,谁在他的时间作为纽约时报的Android开发者在调用的库工作商店,这有助于实现相同。从文章:

我建议使用抽象掉数据加载的数据存储。我们可以利用 Repository 模式并创建数据提供者/存储来从网络获取数据并在需要时缓存它,而不是展示者需要缓存数据。一方面,这种方法可以更轻松地保留数据。另一个优势是我们的数据有单一的真实来源。最后,我们可以消除交互器之类的东西,只需让您的演示者在需要查看内容时订阅您的商店。

希望这个对你有帮助。