У меня есть приложение для Android с некоторым глобальным состоянием (включая некоторые большие SoundPool
s), которые требуют очистки, поэтому, следуя ответам на мой предыдущий вопрос, я пытаюсь обработать это с помощью Service
.
В настоящее время я использую связанную службу, которую каждое действие связывает/разворачивает в onStart
/onStop
, а когда все действия останавливаются, служба становится несвязанной и onDestroy
вызывается в службе, позволяя мне освободить SoundPools
.
Так как жизненный цикл активности преднамеренно перекрывается (новая активность onStart
срабатывает до того, как старая стрелка срабатывает onStop
), при навигации между действиями всегда есть хотя бы одна активность, и служба остается в живых.
Однако, если я поворачиваю экран, чтобы вызвать перезагрузку конфигурации, служба отключается и умирает, когда активная активность проходит через жизненный цикл перезапуска конфигурации.
Как я могу обойти это и сохранить работоспособность службы заново, в то же время позволяя службе умереть, когда приложение остановлено?