Я переношу целевую версию SDK моего приложения на Android Oreo.
Одно из изменений, которые могут повлиять на приложение, заключается в том, что если изменить размер дисплея устройства, приложение, ориентированное на Android-нугу и выше, будетбыть уведомленным, как будто есть изменение ориентации устройства.Ниже приведен источник.
При изменении плотности устройства система уведомляет о запуске приложений следующими способами:
Если приложение предназначено для уровня API 23 или ниже, система автоматически убиваетвсе его фоновые процессы.Это означает, что если пользователь отключается от такого приложения, чтобы открыть экран «Настройки», и изменяет настройку «Размер экрана», система убивает приложение так же, как и в случае нехватки памяти.Если приложение имеет какие-либо процессы переднего плана, система уведомляет эти процессы об изменении конфигурации, как описано в разделе Обработка изменений времени выполнения, так же, как если бы ориентация устройства изменилась.Если приложение предназначено для Android 7.0, все его процессы (основной и фоновый) уведомляются об изменении конфигурации, как описано в разделе Обработка изменений времени выполнения.
Теперь в моем приложении есть длительный процесс, который выполняется в асинхронном режиме.TSak в деятельности Android.Это означает, что приложение имеет AsyncTask, который находится внутри кода активности.
Я создаю диалоговое окно в начале задачи Async и скрываю его, когда задача Async выполнила свою работу.
Теперь предположим, что пользователи запускают задачу, затем переходят к настройке и изменяют размер экрана, затем возвращаются обратно в мое приложение, после чего диалоговое окно приложения исчезает, поскольку асинхронная задача все еще выполняется до конца, что означает, что пользователь можетдумаю, что приложение завершило задачу, но в то время как приложение фактически выполняло бы задачу.Но моя активность также реагирует так, как если бы она была перезапущена, за исключением того, что выполняется асинхронная задача.
Ориентация моего приложения привязана к портретной.
Как мне справиться с таким сценарием?Любая помощь приветствуется.Спасибо!
РЕДАКТИРОВАТЬ: Это сценарий
1) Запуск приложения
2) Главный экран
3) Пользователи нажимают кнопку
4) AsyncTask внутри главного экрана запущен
5) Отображается диалоговое окно с ходом выполнения задачи
6) Пользователь сворачивает приложение и переходит к настройке
7) Изменяет размер дисплея / плотность или изменяет размер шрифта устройства
8) Мое приложение вызывается ОС таким образом, как если бы изменилось вращение устройства
9) Затемпользователь возвращается обратно в приложение
10) Но показанное диалоговое окно больше не отображается
11) Но асинхронная задача работает в фоновом режиме и все еще выполняет свою задачу
12) Задача фактически выполнена, но пользователь считает, что задача еще не выполнена.