MVP RxJava2 — управление сетевой ошибкой

Я пытаюсь следовать шаблону проектирования MVP, используя RxJava2. Я новичок в этом. Поскольку я запрашиваю данные из API, в своем Presenter я вызываю свою модель следующим образом:

mModel.getDataFromAPI()
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(data -> {
        // Do something with the data
    }, throwable -> {
        // A wild error appears!
        // TODO: Display a dialog
    });

Когда возникает ошибка, я хочу отобразить диалог с сообщением для пользователя.

Итак, я подумал о том, чтобы создать displayErrorDialog(String message) в представлении. Но проблема в том, что я вызываю API немного везде в приложении, так что это означает, что ВСЕ мои представления должны будут реализовать метод!

Диалог должен отображаться в представлении:

  • следовать шаблону проектирования MVP
  • потому что мне нужен текущий контекст для отображения диалогового окна.

Я ищу лучшее решение, чтобы не реализовывать один и тот же метод каждый раз, когда у меня появляется новое представление.


person Eselfar    schedule 11.08.2017    source источник


Ответы (1)


У вас может быть BaseView, который реализует displayErrorDialog(String message), и тогда все ваши представления будут расширяться от BaseView.

Если вы используете interfaces, вы можете сделать то же самое, используя BaseInterface, и тогда вы сможете вызывать методы базового представления из любого презентатора.

Надеюсь, это поможет!

person Natan    schedule 11.08.2017
comment
Это то, о чем я думал. Я начал реализовывать такое решение. Спасибо. Если ни у кого нет лучшего решения, я подтвержу ваш ответ. - person Eselfar; 13.08.2017