Я использую шаблон хранилища в mvp с кинжалом. В Область приложения Я связал свои RemoteDataSource и LocalDataSource:
@Binds
@AppScope
@Remote
abstract MainDataSource RemoteDataSource(RemoteDataSource remoteDataSource);
@Binds
@AppScope
@Local
abstract MainDataSource LocalDataSource(LocalDataSource localDataSource);
И я ввел основной репозиторий в область приложения:
@Inject
public MainRepository(@Remote MainDataSource remoteDataSource,
@Local MainDataSource localDataSource) {
this.remoteDataSource = checkNotNull(remoteDataSource);
this.localDataSource = checkNotNull(localDataSource);
}
Теперь в области видимости фрагмента в mainpresenter
я передал MainRepository в своем подрядчике:
@MainFragScope
@Component(modules = {MainFragModule.class}, dependencies = AppComponent.class)
public interface MainFragComponent {
Конструктор презентатора:
private MainDataSource remoteDataSource;
private MainDataSource localDataSource;
@Inject
public MainPresenter(MainRepository repository, ArrayAdapter<String> typesAdapter) {
this.repository = checkNotNull(repository);
this.typesAdapter = checkNotNull(typesAdapter);
}
@Override
public void loadChart(String district, String date, String type) {
remoteDataSource.loadChart(district,date,type);
}
In RemoteDataSource
У меня есть метод с именем loadChart
, и его работа заключается в извлечении данных с удаленного сервера путем модернизации:
public void loadChart(String district, String date, String type) {
JsonObject joParam = new JsonObject();
apiService.getAnalyticalReport(joParam).enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
try {
if (response.isSuccessful()) {
// need presenter reference to pass response to it
После извлечения данных мне нужно вернуть эти данные с сервера для предъявителя фрагмента (MainPresenter) .IНужна ссылка на докладчика.Как я могу получить ведущего без уничтожения mvp ролей !!?Потому что в AppScope у меня нет доступа к MainPresenter .