Наконец-то продолжил разработку.
MainActivity.class был
4,500 строк, стал
100! + 120 строк CustomActivity, от которого должны наследоваться все активити проекта.
Не всё нравится в новой архитектуре, но явно лучше прежнего месива.
Из интересного:
1. сделал универсальный ActivityResultManager - регистрируем слушателя результата и стартуем startActivityForResult - всё.
В базовом классе активити результат закидывается в этот менеджер, и делается попытка найти подходящего слушателя.
2. сделал LifeCycleManager и LifeCycleComponent.
Менеджер вешается на базовый класс активити и прокидывает события типа onStart / onStop / и т.п.
во все зарегистрированные для этого активити компоненты.
Добавление компонента в менеджер происходит в конструкторе компонента и скрыто от разработчика.
Выглядит примерно так:
private static final LifeCycleComponent lifeCycleComponent = new LifeCycleComponent(MainActivity.class) {
@Override
public void onResume(IHaveLiveCycle parent) {
if (adView != null) {
adView.resume();
}
}
@Override
public void onPause(IHaveLiveCycle parent) {
if (adView != null) {
adView.pause();
}
}
};