Android MVP с RxAndroid + Retrofit

Недавно я начал много читать о MVP, и я хочу с ним работать.

Однако я не могу правильно понять, куда должен идти Rx + Retrofit code? Я думаю, что это должно быть в слое модели через Interactors, но все же может кто-то поделиться с этим немного света?

И что происходит с обратным вызовом RX? onNext(), onCompleted() и onFailure() передает данные обратно в Presenter или мы реализуем прослушиватели, а затем передаем их в Presenter?

Я также хочу сохранить данные (Realm/StorIO), когда я получу его в onNext(), поэтому снова передаем его другому DataLayer или куда он должен идти?

Также мы должны разделить обратные вызовы Rx?

Я следую за этим сообщением https://davidguerrerodiaz.wordpress.com/2015/10/13/a-brief-introduction-to-a-cleaner-android-architecture-the-mvp-pattern/

и этот отдельный репозиторий github от antonioleiva.com https://github.com/antoniolg/androidmvp

Ответ 1

Как вы указали, функциональность RxJava определяет вариант использования вашего модельного слоя, поэтому он будет размещен в интеракторе этого слоя. Вы можете создать другой интерактор для каждого варианта использования. Скажем, вы вытаскиваете список пользователей с вашего сервера, это будет прецедентом и интерактором, который будет иметь RxJava/Retrofit Observable.

Затем у вас будет презентатор с наблюдателем в нем, который заинтересован в этом списке пользователей, поэтому он будет подписан на этот Observable.

И, наконец, когда этот Observer in имеет все данные Observable (onCompleted), он преобразует эти данные (при необходимости) и перейдет к представлению, которое будет отвечать за его отображение.

Ответ 2

Существует потрясающее сообщение, объясняющее mvp. Rx - просто дополнительный инструмент для этого.

http://hannesdorfmann.com/android/mosby-playbook/

есть глубокое объяснение и исходный код с примером.