Android MVP架构中,两个Fragment共享相同的数据。

3
我的应用程序有一个活动和两个片段。该活动仅用作片段容器。其中一个片段显示文本数据,第二个片段将相同的数据显示为图表。这些数据来自远程JSON API。由于MVP要求我们为每个视图(模块、模型、Presenter、Repository等)复制相同的结构,因此我的应用程序在每个片段中都从JSON API请求数据,共两次。我如何构建更高效的架构以使其符合MVP要求?
请参见下面我实现的两个片段的代码:
模块
@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;
    }
}

https://dev59.com/ClsX5IYBdhLWcg3wFsIa?rq=1 - Manish
1个回答

3

你必须在活动中使用MVP,以便只有一次请求向JSON API发出。此后,从该活动注册的所有片段都可以获得它。


谢谢。所以我从API中获取数据,并在我的MVP结构的活动中使用Bundle将这些检索到的数据发送到我的两个片段,对吗? - Laurent
是的,你说得对。另一种解决方法是,你也可以从片段中调用活动的方法来获取响应。两种方式都可以正常工作。 - Jitesh Mohite
很高兴能帮助你。 - Jitesh Mohite

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接