Android MVP с RxAndroid + дооснащение

В последнее время я начал много читать о MVP и хочу попрактиковаться с ним в своих проектах.

Однако я не могу правильно понять, куда должен идти код Rx + Retrofit? Я думаю, что это должно быть на уровне модели через 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


person Rinav    schedule 20.11.2015    source источник
comment
У меня нет никакого опыта работы с Rx и Retrofit, но они, кажется, лучше всего работают в M. Рассматривайте P и V как своего рода надстройку для взаимодействия с пользователем, поэтому их ответственность заключается только в том, чтобы уведомлять пользователя и слушать взаимодействия. . Короче говоря, в P и V нет бизнес-логики. Также рассмотрите свой M как открытые ворота во внешнюю кодовую базу, которую можно повторно использовать в другом месте, скажем, в приложении, не связанном с взаимодействием с пользователем (например, в системной службе), или даже в других средах, таких как GWT. Это вносит определенную сложность через интерфейсы разных уровней, но делает вашу систему слабо связанной.   -  person Lyubomyr Shaydariv    schedule 20.11.2015


Ответы (2)


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

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

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

person David Guerrero    schedule 20.11.2015

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

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

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

person wnc_21    schedule 25.11.2015
comment
Проблема со ссылкой: 404... Страница не найдена. - person Filipe Brito; 26.02.2016
comment
Ага, почему-то убрали эту замечательную статью. - person wnc_21; 27.02.2016
comment
Вы можете получить доступ к теме здесь: http://webcache.googleusercontent.com/search?q=cache:http://hannesdorfmann.com/android/mosby-playbook&gws_rd=cr&ei=Sm36VtWFEIbWaofztLgM - person Marzouk; 29.03.2016
comment
у меня открылось без проблем - person LTroya; 06.04.2016
comment
Они вернули его обратно - person wnc_21; 06.04.2016
comment
Не очень хороший пример передовой практики, двухстороннее представление ссылки на ведущего и ведущего для просмотра с некоторым ужасным избыточным весом и встроенным int 'showError', 'showLogin' делает его беспорядочным. - person J.D.1731; 17.11.2016