Во-первых, краткое описание фона проблемы:
У меня возникли проблемы с обработкой жизненных циклов фоновых рабочих в соответствии с жизненным циклом Activity.Первая проблема заключается в том, что каждый раз при изменении конфигурации создается новый экземпляр действия (в том числе ориентация экрана), поэтому мне пришлось перетянуть рабочих из старого экземпляра в новый.Во-вторых, это осложняется тем фактом, что иногда рабочие отображают диалоговое окно прогресса, а иногда - диалоговое окно с ошибкой, с которым пользователь должен взаимодействовать.Работа со всеми этими вещами - рабочими, диалогами и т. Д. - во всех экземплярах действия стала настолько сложной, что теперь я ясно вижу, что это был неправильный путь.
Правильный путь, я считаю, заключался в том, чтобыустранить это восстановление в первую очередь.Если это было предусмотрено, то у меня были действия с очень простым и понятным жизненным циклом, и мне не нужно было отслеживать работников и диалоги.Этого можно достичь, указав android:configChanges="..."
в манифесте.
Теперь возникает вопрос:
Учитывая, что у активности есть android:configChanges="..."
, которая включает все возможные вещи (ориентация, клавиатура и всеостальное) - есть ли гарантия, что действие создается только один раз, пока оно живое, а не уничтожено / воссоздано даже в фоновом режиме? Документация по этому вопросу не ясна.
Если кто-то знает случаи, когда такая гарантия не действует - пожалуйста, дайте мне знать.И самое главное - как смоделировать эти случаи, чтобы проверить их?
Я очень ценю ваши ответы.
PS: В какой документации говорится, что "система может удалить вашу активность в любой момент, если захочет ", - но мы не рассматриваем это здесь, потому что это будет новая история для нового экземпляра, когда пользователь вернется к экрану, действие которого было удалено таким образом.В этом случае мы просто начнем с нуля, как если бы пользователь только что открыл этот экран.