moxy. Из чего состоит и как этим пользоваться

24

Upload: yuri-shmakov

Post on 20-Mar-2017

1.255 views

Category:

Software


11 download

TRANSCRIPT

Page 1: Moxy. Из чего состоит и как этим пользоваться
Page 2: Moxy. Из чего состоит и как этим пользоваться

Что такое MVPMVP - шаблон проектирования пользовательского интерфейса

M-Model : бизнес-логика приложенияV-View : система ввода/вывода вашего приложенияP-Presenter : управляет двумя вещами : 1. Реагирует на ввод данных 2. Сообщает, что выводить

Page 3: Moxy. Из чего состоит и как этим пользоваться

Цели Moxy• Отсоединить async от lifecycle• Presenter должен переживать пересоздание

View• Пересозданная View подключается к имеющемуся

Presenter• View должна показывать актуальное состояние

Presenter• Избежать boilerplate-кода

Page 4: Moxy. Из чего состоит и как этим пользоваться

Схема работы MoxyView Presenter Model

ViewState

Commands

Page 5: Moxy. Из чего состоит и как этим пользоваться

Схема работы MoxyView Presenter Model

ViewState

Commands

Page 6: Moxy. Из чего состоит и как этим пользоваться

ViewState

Схема работы MoxyView Presenter Model

Commands

Page 7: Moxy. Из чего состоит и как этим пользоваться

Схема работы MoxyView

ViewState

Presenter Model

Commands

Page 8: Moxy. Из чего состоит и как этим пользоваться

Схема работы MoxyView

ViewState

Presenter Model

Commands

View

Page 9: Moxy. Из чего состоит и как этим пользоваться

Схема работы MoxyView

ViewState

Presenter Model

Commands

View

Page 10: Moxy. Из чего состоит и как этим пользоваться

Схема работы MoxyView

ViewState

Presenter Model

Commands

View

Page 11: Moxy. Из чего состоит и как этим пользоваться

Схема работы MoxyView

ViewState

Presenter Model

Commands

View

Page 12: Moxy. Из чего состоит и как этим пользоваться

Схема работы MoxyView

ViewState

Presenter Model

Commands

View

Page 13: Moxy. Из чего состоит и как этим пользоваться

Схема работы MoxyView

ViewState

Presenter Model

Commands

ViewView

Page 14: Moxy. Из чего состоит и как этим пользоваться

Схема работы MoxyView

ViewState

Presenter Model

Commands

ViewView

Page 15: Moxy. Из чего состоит и как этим пользоваться

ViewView

Схема работы Moxy

ViewState

Presenter Model

Commands

Page 16: Moxy. Из чего состоит и как этим пользоваться

ViewView

Схема работы Moxy

ViewState

Presenter Model

Commands

Page 17: Moxy. Из чего состоит и как этим пользоваться

Moxy – примерЗадача: сделать экран авторизации

•По нажатию на кнопку входа:– Показать прогресс запроса– Начать асинхронный запрос авторизации

•После завершения асинхронного запроса авторизации:– Скрыть прогресса запроса– Если авторизация прошла успешно, то перейти на

главный экран– Если пришла ошибка, то показать диалог с ошибкой

Page 18: Moxy. Из чего состоит и как этим пользоваться

Moxy – пример Задача: сделать экран авторизации

Решение:•Сделать SignInView•Сделать SignInActivity•Сделать SignInPresenter

Page 19: Moxy. Из чего состоит и как этим пользоваться

Moxy – пример@StateStrategyType(AddToEndSingleStrategy.class)public interface SignInView extends MvpView { void showProgress();

void hideProgress();

void showError(Throwable exception);

void hideError();

@StateStrategyType(SingleStateStrategy.class) void onSignIn();}

public class SignInActivity extends MvpActivity implements SignInView, UsersCounterView { @InjectPresenter SignInPresenter mSignInPresenter; @InjectPresenter UsersCounterPresenter mUsersCounterPresenter; ...

Page 20: Moxy. Из чего состоит и как этим пользоваться

Moxy – пример@InjectViewStatepublic class SignInPresenter extends MvpPresenter<SignInView> { @Inject Repository mRepository;

public SignInPresenter() { SampleApplication.getAppComponent().inject(this); }

public void auth(String login, String password) { getViewState().hideError(); getViewState().showProgress(); mRepository.authentication() .signIn(login, password) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) ↓↓↓

↓↓↓ .subscribe( ignored -> { getViewState().hideProgress(); getViewState().onSignIn(); }, throwable -> { getViewState().hideProgress(); getViewState().showError(throwable); });

Page 21: Moxy. Из чего состоит и как этим пользоваться

Жизненный цикл компонентов MoxyView == ActivityPresenterStore: пока жив процесс, получить доступ можно через MvpFacade.getInstance().getPresenterStore()Presenter:

LOCAL(default): пока View не финишируетGLOBAL: пока живёт процессWEAK: пока не финишируют все View

ViewState: пока жив Presenter(в save state не сохраняется)

Page 22: Moxy. Из чего состоит и как этим пользоваться

СоветыДля инициализации Presenter сделайте метод Presenter.init()Автокомплит работает сразу, без компиляции проектаПроект соберется даже без кодогенерацииМожно не использовать аннотацииMvpDelegate поможет превратить любой класс во View

Page 23: Moxy. Из чего состоит и как этим пользоваться

Как наладить диалогиМежду разными View: фантомный диалог

View1 → Presenter1 → Model → Presenter2 → View2

Между разными Presenter:Presenter1 → Model → Presenter2

Как не стоит делать:Presenter1 → View → Presenter2

Page 24: Moxy. Из чего состоит и как этим пользоваться