Не могу понять как работает MvpPresenter. Почему когда Activity пересоздается, то MvpPresenter все еще живет. Что из себя представляет MvpPresenter?
Потому что MvpPresenter использует SingleTone?
Ваша активити наследуется от MvpAppCompatActivity(), так вот если посмотреть у нее метод onDestroy:
@Override
protected void onDestroy() {
super.onDestroy();
getMvpDelegate().onDestroyView();
if (isFinishing()) {
getMvpDelegate().onDestroy();
}
}
То мы увидим, что метод getMvpDelegate().onDestroy() вызывается только в том случае, когда активити финиширует (спокойно переживаем методы onPause(), onStop(), onDestroy() при перевороте к примеру). Заглянем глубже, в метод getMvpDelegate().onDestroy():
/**
* <p>Destroy presenters.</p>
*/
public void onDestroy() {
PresentersCounter presentersCounter = MvpFacade.getInstance().getPresentersCounter();
PresenterStore presenterStore = MvpFacade.getInstance().getPresenterStore();
Set<MvpPresenter> allChildPresenters = presentersCounter.getAll(mDelegateTag);
for (MvpPresenter presenter : allChildPresenters) {
boolean isRejected = presentersCounter.rejectPresenter(presenter, mDelegateTag);
if (isRejected && presenter.getPresenterType() != PresenterType.GLOBAL) {
presenterStore.remove(presenter.getTag());
presenter.onDestroy();
}
}
}
Авторы библиотеки отметили нам его как "убийцу презентеров" :) Первым делом "boolean isRejected = " проверяется нет ли еще ссылок на этот презентер (мб мы инжектили его в несколько вьюшек), и если вернулось true и мы не объявляли презентер глобальным синглтоном, то презентер удаляется из стора и на нем самом вызывается метод onDestroy() Надеюсь получилось объяснить хоть немножко :)
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости