MVP + Dagger2. Как сделать так, чтобы презентер не пересоздавался при смене конфигурации?
В общем есть 2 области видимости (Scopes). @SingleTon и область видимости, которую я создал @ActivityScope.
Мне необходимо, чтобы презентер не пересоздавался при смене конфигурации.
Если сделать его @SingleTon и перенести в модуль области видимости приложения, то он не умрёт и будет висеть в памяти, если мы перейдём в другую активность, что нехорошо.
Если сделать его с областью видимости активности, он умирает и создаётся новый при смене конфигурации.
Я думаю, если сделать статический метод getInstance в самом классе презентера и прописать с помощью него получение его в модуле видимости активности c помощью @Provide и сделать в нём же метод clearInstance, который будет вызываться в if (isFinishing()) в onDestroy() , то это возможно решит проблему.
Есть ли какие-либо другие способы это сделать, например, средствами dagger, не используя moxy?
Просто человек в конце этой статьи https://startandroid.ru/ru/blog/473-mvp-na-primere-jekrana-s-pin-kodom.html утверждает, что сделал обработку смены конфигурации с помощью даггер. Но я так и не понял как.
Ответы (1 шт):
В общем, я разобрался. Просто сохраняем ссылку в поле активити на сomponent c областью видимости ActivityScope. И сохраняем этот объект в onSaveInstanceState как Serialable(предварительно унаследовав интерфейс компонента от Serialable), а в onCreate(), если bundle == null, то инициализируем, иначе достаём из bundle.