Я не рекомендую переопределять метод onConfigurationChanged
(и не указывать ориентацию в качестве одного из переопределений вашей конфигурации в файле манифеста). С изменением ориентации действие будет воссоздано, и это здорово, потому что оно загрузит ваш новый макет со всеми правильными файлами ресурсов.
Что касается AsyncTask, то обычным способом было бы не связывать это с Activity. Вместо этого вы, возможно, могли бы создать класс одноэлементного менеджера, который содержит ссылку на активность в качестве слушателя. Когда активность возрождается, вы можете обновить класс менеджера новым экземпляром Activity для обратного вызова, и когда асинхронный процесс завершится, он уведомит о текущей активности.
Чтобы сохранить индикатор выполнения, вы можете сохранить переменную состояния, которая сохраняется в течение onSaveInstanceState
и восстанавливается с помощью onRestoreInstanceState
, которая может использоваться для отображения / скрытия представлений. Другой вариант - опросить класс менеджера для запущенного процесса и соответствующим образом обновить макет во время onCreate
Возможно, это не самое быстрое и простое решение, но хорошая основа для этого поможет в будущем.