Android MVP - 重用多个 fragment 的共享数据

标签 android android-fragments mvp

我正在使用 MVP 构建 Android 应用程序。 其中一个屏幕以一种主/详细 View (嵌入播放器的内容页面)显示数据:

mockup

顶部是播放器( fragment ),下面是内容信息(带有 fragment 的viewpager),用户可以在页面(ViewPager)之间滑动来切换内容。当Viewpager位置发生变化时,播放器也会相应更新并开始播放当前内容。

演示者请求的数据来自存储库,具有本地(数据库)/远程(Rest API)数据源。

如何充分利用 MVP 以避免多次请求相同的数据?

我的 Activity 中是否应该只有一个 Presenter,并在某处保留/缓存内容信息信息请求的数据,以便在位置更改时将其传回播放器?

还是为每个 ContentInfo 提供一个演示者,请求自己的数据,为播放器提供一个演示者,在调用 play() 方法时再次请求相同的数据?


我找到了this相关主题,但它并不真正适合我的情况,因为在内容信息 fragment 中请求数据的同时,播放器中的数据没有更新(我正在通过 ViewPager 获取 fragment 的 onCreate 数据)当滑动完成时它已经加载)。

最佳答案

最好的方法是让各个组件从存储库请求数据,并在存储库级别处理缓存。

当ViewPager的内容发生变化时,只需通知播放器新内容的ID即可。然后播放器将从存储库中获取该内容。存储库“知道”该内容已被下载并从数据库而不是网络提供它。

如果数据库不够快,可以在存储库内实现内存缓存。

关于Android MVP - 重用多个 fragment 的共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48497285/

相关文章:

android - 每次 Activity 重新加载

android - 将演示者传递给 Android 中的 fragment (没有构造函数)

c# - MVP、泛型和 DRY

javascript - 什么触发 android chrome 显示 "make page mobile-friendly"面板?

java - toString 不适用于 getSelectedItem - Android

android - 广播接收器未收到 Intent (RemoteViews/PendingIntent)

android - 带有自定义标题的 DialogFragment

android - fragment 内的微调器

android - 无法实例化 PagerAdapter 类型

architecture - 静态 View 模型/表示模型