两个 fragment 共享相同数据的 Android MVP

标签 android json android-fragments mvp

我的应用有一个 Activity 和两个 fragment 。该 Activity 仅用作 fragment 容器。其中一个 fragment 将数据显示为文本。第二个 fragment 显示与图表相同的数据。此数据来自远程 JSON API。与在 MVP 中一样,我们必须为每个 View (模块、模型、演示者、存储库...)复制相同的结构,我的应用程序从 JSON API 请求每个 fragment 的数据,所以两次。我怎样才能拥有一个更高效的架构,让我尊重 MVP?

请参阅下面为我的两个 fragment 实现的代码:

模块

@Module
public class PollutionLevelsModule {
    @Provides
        public PollutionLevelsFragmentMVP.Presenter providePollutionLevelsFragmentPresenter(PollutionLevelsFragmentMVP.Model pollutionLevelsModel) {
        return new PollutionLevelsPresenter(pollutionLevelsModel);
    }

    @Provides
    public PollutionLevelsFragmentMVP.Model providePollutionLevelsFragmentModel(Repository repository) {
        return new PollutionLevelsModel(repository);
    }

    @Singleton
    @Provides
    public Repository provideRepo(PollutionApiService pollutionApiService) {
        return new PollutionLevelsRepository(pollutionApiService);
    }
}

存储库

public class PollutionLevelsRepository implements Repository {
    private PollutionApiService pollutionApiService;

    public PollutionLevelsRepository(PollutionApiService pollutionApiService) {
        this.pollutionApiService = pollutionApiService;
    }

    @Override
    public Observable<Aqicn> getDataFromNetwork(String city, String authToken) {
        Observable<Aqicn> aqicn = pollutionApiService.getPollutionObservable(city, authToken);

        return aqicn;
    }
}

最佳答案

您必须在您的 Activity 中使用 MVP,以便只对 JSON API 执行一次请求。之后,从该 Activity 注册的所有 fragment 都可以获得该请求。

关于两个 fragment 共享相同数据的 Android MVP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43447863/

相关文章:

java - 如何在 android 中的图像上放置图钉标记图像?

java - 从编辑文本检索地名到字符串时,来自地理编码器类的 NullPointerException

Android:如果从通知栏恢复应用程序,则绘制的 Canvas 油漆消失了

javascript - Highlight.js 自定义语言定义

javascript - 如何取回由 knockout 映射绑定(bind)的 knockout 可观察对象

android - 具有多个 fragment 和屏幕方向的单个 Activity

android - 当我的应用程序多次最小化时,不会调用 Fragment onPause()

android - 从数据库中获取值并将其显示在android中的TextView中

java - 使用 Jackson 反序列化字符串以映射多种类型

java - android fragment 的最佳实践?