Я в своём проекте сделал управление жизненным циклам скоупов несколько иначе чем в gitfox и на мой взгляд это решение более чистое. При этом нет проблем с DKA (наверно) и убийством процесса (точно). Для того чтобы продемонстрировать, я пока что по быстрому выдрал из проекта части кода и сделал gist чтобы можно было показать. Написал там в начале комментарии с сутью проблемы и её решением.
https://gist.github.com/rsajob/cf6f2951d3e7f49afdbfb6a3bc7e02aaОсновные моменты которые мне кажутся не очень в реализации gitfox в этом плане:
1. Жёсткая завязка BaseFragment на работу со скоупами. Не критично, но мне кажется лучше не смешивать тут эту логику. Я поэтому сделал Делегат. Хотя вот например с тем чтобы держать там parentScopeName хорошая идея. Я сейчас parentScopeName передаю явно при создании экрана.
2. Ты закрываешь скоуп в BaseFragment::onDestroy() с использованием needCloseScope() - я не понимаю, сдесь дублируется логика убийства презентера в Moxy или тут логика улучшена для корректной работы с DKA? Время жизни скоупа равняется времени жизни презентера, и закрывать их надо по идее в MvpPresenter::onDestroy(), а убийством презентеров корректно управляет Moxy (или всётаки не корректно при включении DKA???).