Size: a a a

Moxy – MVP библиотека под Android

2019 September 05

D

DarkPerl in Moxy – MVP библиотека под Android
Алексей Ершов
Эти два варианта действительно неочевидные) проще всего заинжектить провайдер, а потом позвать его в методе с аннотацией @ProvidePresenter.
Но, они рабочие ?) Можно обойтись без Provider<Presenter> ?
источник

АЕ

Алексей Ершов in Moxy – MVP библиотека под Android
Не знаю, не пробовал, но по идее рабочие)
источник

АЕ

Алексей Ершов in Moxy – MVP библиотека под Android
DarkPerl
То есть, все будт работать и ничего не сломается ?)
Dagger2 создаст нужные объекты и передаст их в конструктор Presenter(...), создаст presenter и положит в поле Presenter presenter. А потом выполнится метод помеченный @ProvidePresenter и перезапишет еще раз поле presenter ?)
Да, примерно так.
источник

D

DarkPerl in Moxy – MVP библиотека под Android
Алексей Ершов
Да, примерно так.
Вот тут вы кажется объясняете эту магию )
@InjectPresenter
MyPresenter mPresenter;

@ProvidePresenter
MyPresenter providePresenter() {
   return mComponent.providePresenter();
}

@Override
public void onCreate(Bundle saveState) {
   mComponent = getComponent();
   mComponent.inject(this);
   super.onCreate();
   ...
То есть, как я понял, задача сводится к тому что сначала отрабатывает Dagger2 и делает инжект, а потом уже Moxy с помощью метода @ProvidePresenter MyPresenter providePresenter() достает нужный нам объект presenter
источник

D

DarkPerl in Moxy – MVP библиотека под Android
У меня еще один вопрос )
Как сделать глобальный презентер на несколько view )
Я так понял, что там что то поменялось в новом релизе.
источник

АЕ

Алексей Ершов in Moxy – MVP библиотека под Android
DarkPerl
Вот тут вы кажется объясняете эту магию )
@InjectPresenter
MyPresenter mPresenter;

@ProvidePresenter
MyPresenter providePresenter() {
   return mComponent.providePresenter();
}

@Override
public void onCreate(Bundle saveState) {
   mComponent = getComponent();
   mComponent.inject(this);
   super.onCreate();
   ...
То есть, как я понял, задача сводится к тому что сначала отрабатывает Dagger2 и делает инжект, а потом уже Moxy с помощью метода @ProvidePresenter MyPresenter providePresenter() достает нужный нам объект presenter
Именно так, сначала даггер дает вам презентер, а потом вы его отдаете мокси, и она дальше им рулит.
источник

D

DarkPerl in Moxy – MVP библиотека под Android
Алексей Ершов
Именно так, сначала даггер дает вам презентер, а потом вы его отдаете мокси, и она дальше им рулит.
Благодарю, Алексей )
источник

АЕ

Алексей Ершов in Moxy – MVP библиотека под Android
DarkPerl
У меня еще один вопрос )
Как сделать глобальный презентер на несколько view )
Я так понял, что там что то поменялось в новом релизе.
Лучше не надо так делать) если очень хочется, то разве что поддерживать его единственность средствами DI, глобальные презентеры на уровне мокси выпилены.
источник

АЕ

Алексей Ершов in Moxy – MVP библиотека под Android
Но презентер всё-таки штука для одной конкретной View, расшаренное состояние - это ответственность вашей логики, то есть, model
источник

D

DarkPerl in Moxy – MVP библиотека под Android
Алексей Ершов
Лучше не надо так делать) если очень хочется, то разве что поддерживать его единственность средствами DI, глобальные презентеры на уровне мокси выпилены.
То есть, если у меня есть несколько Activity (экранов) и я хочу чтобы presenter жил, то мне придется пересоздавать его для каждого Activity ?)
источник

АЕ

Алексей Ершов in Moxy – MVP библиотека под Android
DarkPerl
То есть, если у меня есть несколько Activity (экранов) и я хочу чтобы presenter жил, то мне придется пересоздавать его для каждого Activity ?)
Что значит пересоздавать? Вы можете попробовать заинжектить на несколько экранов один и тот же инстанс этого презентера. Но не надо)
источник

D

DarkPerl in Moxy – MVP библиотека под Android
Алексей Ершов
Что значит пересоздавать? Вы можете попробовать заинжектить на несколько экранов один и тот же инстанс этого презентера. Но не надо)
Ну тогда как лучше сделать ?))))))
Стейт хранить где то внутри model, и при переходе из Activity1 в  Activity2 его восстанавливать ?)
Под стейтом я понимаю какие то данные для обеспечения бизнес логики.
источник

АЕ

Алексей Ершов in Moxy – MVP библиотека под Android
Стейт хранится в модели, нужные презентеры его получают и показывают.
источник

D

DarkPerl in Moxy – MVP библиотека под Android
Алексей Ершов
Стейт хранится в модели, нужные презентеры его получают и показывают.
То есть, придется пересоздавать presenter ?)
источник

АЕ

Алексей Ершов in Moxy – MVP библиотека под Android
Просто создать новый экземпляр. Вы говорите пересоздавать, как будто это что-то очень сложное)
источник

D

DarkPerl in Moxy – MVP библиотека под Android
Алексей Ершов
Просто создать новый экземпляр. Вы говорите пересоздавать, как будто это что-то очень сложное)
Ну, я как представлю всю иерархию необходимых объектов, которые нужно передать в presenter ) Мне становиться его жалко ) 😂 шучу )
Вообщем, логика в общем случае такая что presenter для каждой view свой и состояние приложения нужно писать глобоко в model ) Куда нить в DB или файл или на сервер )
источник

АЕ

Алексей Ершов in Moxy – MVP библиотека под Android
Да, всё так. На то и DI, чтобы не думать о графе зависимостей каждый раз)
источник

D

DarkPerl in Moxy – MVP библиотека под Android
Алексей Ершов
Да, всё так. На то и DI, чтобы не думать о графе зависимостей каждый раз)
Понял, благодарю, Алексей )
На счет Moxy вопросы пока кончились )
Пойду мучать народ в других ветках другими вопросами ) 🤓
источник

AM

Android Mobilovich in Moxy – MVP библиотека под Android
perfect
источник

AM

Android Mobilovich in Moxy – MVP библиотека под Android
Спасибо, что поддерживаете либу
источник