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/
есть глубокое объяснение и исходный код с примером.