Android 两个片段共享相同数据的 MVP
Android MVP with two fragments sharing the same data
我的应用有一个 activity 和两个片段。 activity 仅用作片段容器。其中一个片段将数据显示为文本。第二个片段显示与图表相同的数据。此数据来自远程 JSON API。与在 MVP 中一样,我们必须为每个视图(模块、模型、演示者、存储库...)复制相同的结构我的应用程序从 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;
}
}
您必须在 activity 中使用 MVP,以便只对 JSON API.After 执行一次请求,所有从 activity 注册的片段都可以明白了。
我的应用有一个 activity 和两个片段。 activity 仅用作片段容器。其中一个片段将数据显示为文本。第二个片段显示与图表相同的数据。此数据来自远程 JSON API。与在 MVP 中一样,我们必须为每个视图(模块、模型、演示者、存储库...)复制相同的结构我的应用程序从 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;
}
}
您必须在 activity 中使用 MVP,以便只对 JSON API.After 执行一次请求,所有从 activity 注册的片段都可以明白了。