Moxy. Из чего состоит и как этим пользоваться
-
Upload
yuri-shmakov -
Category
Software
-
view
1.259 -
download
11
Transcript of Moxy. Из чего состоит и как этим пользоваться
![Page 1: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/1.jpg)
![Page 2: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/2.jpg)
Что такое MVPMVP - шаблон проектирования пользовательского интерфейса
M-Model : бизнес-логика приложенияV-View : система ввода/вывода вашего приложенияP-Presenter : управляет двумя вещами : 1. Реагирует на ввод данных 2. Сообщает, что выводить
![Page 3: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/3.jpg)
Цели Moxy• Отсоединить async от lifecycle• Presenter должен переживать пересоздание
View• Пересозданная View подключается к имеющемуся
Presenter• View должна показывать актуальное состояние
Presenter• Избежать boilerplate-кода
![Page 4: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/4.jpg)
Схема работы MoxyView Presenter Model
ViewState
Commands
![Page 5: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/5.jpg)
Схема работы MoxyView Presenter Model
ViewState
Commands
![Page 6: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/6.jpg)
ViewState
Схема работы MoxyView Presenter Model
Commands
![Page 7: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/7.jpg)
Схема работы MoxyView
ViewState
Presenter Model
Commands
![Page 8: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/8.jpg)
Схема работы MoxyView
ViewState
Presenter Model
Commands
View
![Page 9: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/9.jpg)
Схема работы MoxyView
ViewState
Presenter Model
Commands
View
![Page 10: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/10.jpg)
Схема работы MoxyView
ViewState
Presenter Model
Commands
View
![Page 11: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/11.jpg)
Схема работы MoxyView
ViewState
Presenter Model
Commands
View
![Page 12: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/12.jpg)
Схема работы MoxyView
ViewState
Presenter Model
Commands
View
![Page 13: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/13.jpg)
Схема работы MoxyView
ViewState
Presenter Model
Commands
ViewView
![Page 14: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/14.jpg)
Схема работы MoxyView
ViewState
Presenter Model
Commands
ViewView
![Page 15: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/15.jpg)
ViewView
Схема работы Moxy
ViewState
Presenter Model
Commands
![Page 16: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/16.jpg)
ViewView
Схема работы Moxy
ViewState
Presenter Model
Commands
![Page 17: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/17.jpg)
Moxy – примерЗадача: сделать экран авторизации
•По нажатию на кнопку входа:– Показать прогресс запроса– Начать асинхронный запрос авторизации
•После завершения асинхронного запроса авторизации:– Скрыть прогресса запроса– Если авторизация прошла успешно, то перейти на
главный экран– Если пришла ошибка, то показать диалог с ошибкой
![Page 18: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/18.jpg)
Moxy – пример Задача: сделать экран авторизации
Решение:•Сделать SignInView•Сделать SignInActivity•Сделать SignInPresenter
![Page 19: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/19.jpg)
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. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/20.jpg)
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. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/21.jpg)
Жизненный цикл компонентов MoxyView == ActivityPresenterStore: пока жив процесс, получить доступ можно через MvpFacade.getInstance().getPresenterStore()Presenter:
LOCAL(default): пока View не финишируетGLOBAL: пока живёт процессWEAK: пока не финишируют все View
ViewState: пока жив Presenter(в save state не сохраняется)
![Page 22: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/22.jpg)
СоветыДля инициализации Presenter сделайте метод Presenter.init()Автокомплит работает сразу, без компиляции проектаПроект соберется даже без кодогенерацииМожно не использовать аннотацииMvpDelegate поможет превратить любой класс во View
![Page 23: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/23.jpg)
Как наладить диалогиМежду разными View: фантомный диалог
View1 → Presenter1 → Model → Presenter2 → View2
Между разными Presenter:Presenter1 → Model → Presenter2
Как не стоит делать:Presenter1 → View → Presenter2
![Page 24: Moxy. Из чего состоит и как этим пользоваться](https://reader038.fdocuments.net/reader038/viewer/2022102522/58cf56091a28aba17e8b6053/html5/thumbnails/24.jpg)