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