Как мне избежать перезагрузки активности с помощью класса asynctask в действии, когда пользователь меняет ориентацию в android? Кто-нибудь может привести пример?
Избегайте перезагрузки активности с помощью асинтаксиса при изменении ориентации в Android
Ответы (2)
Чираг уже правильно указал на решение.
Я просто хочу добавить, что перезапуск Activity не имеет ничего общего с AsyncTask
в нем. По умолчанию при любых изменениях конфигурации действие перезапускается, ЕСЛИ изменение конфигурации не обрабатывается явным образом Activity. Это делается путем внесения записи в файл манифеста.
Пройдите по этой ссылке в руководстве разработчика: android: configChanges
ПРИМЕЧАНИЕ. Проверьте код на устройстве, на котором нет эмулятора. Потому что раньше я сталкивался с подобной проблемой. Тот же код не работал на эмуляторе, но на устройстве он работал отлично. Поэтому добавьте запись для android:configChanges
в манифест и проверьте приложение на устройстве Android, а не в эмуляторе.
И я второй @hackbod. Делайте это только в случае необходимости!
Пожалуйста, отключите изменения конфигурации в крайнем случае. В этом случае ваше приложение должно работать правильно. Если вы отключите изменение конфигурации ориентации, потому что оно ломается, ваше приложение все равно будет ломаться другим, иногда более тонким способом. Разрешение перезапуска действия из-за изменения конфигурации ориентации - это очень хороший способ легко протестировать эти важные пути кода вашего приложения, которые в противном случае выполняются гораздо реже, но все же приведут к сбоям в руках ваших пользователей.
Чтобы переносить активные объекты между экземплярами Activity, используйте новую статическую библиотеку фрагментов, которая позволяет создавать фрагменты, которые сохраняются для вас в разных экземплярах.