Избегайте перезагрузки активности с помощью асинтаксиса при изменении ориентации в Android

Как мне избежать перезагрузки активности с помощью класса asynctask в действии, когда пользователь меняет ориентацию в android? Кто-нибудь может привести пример?


person mohan    schedule 17.03.2011    source источник


Ответы (2)


Чираг уже правильно указал на решение.

Я просто хочу добавить, что перезапуск Activity не имеет ничего общего с AsyncTask в нем. По умолчанию при любых изменениях конфигурации действие перезапускается, ЕСЛИ изменение конфигурации не обрабатывается явным образом Activity. Это делается путем внесения записи в файл манифеста.

Пройдите по этой ссылке в руководстве разработчика: android: configChanges

ПРИМЕЧАНИЕ. Проверьте код на устройстве, на котором нет эмулятора. Потому что раньше я сталкивался с подобной проблемой. Тот же код не работал на эмуляторе, но на устройстве он работал отлично. Поэтому добавьте запись для android:configChanges в манифест и проверьте приложение на устройстве Android, а не в эмуляторе.

И я второй @hackbod. Делайте это только в случае необходимости!

person Udayan    schedule 17.03.2011

Пожалуйста, отключите изменения конфигурации в крайнем случае. В этом случае ваше приложение должно работать правильно. Если вы отключите изменение конфигурации ориентации, потому что оно ломается, ваше приложение все равно будет ломаться другим, иногда более тонким способом. Разрешение перезапуска действия из-за изменения конфигурации ориентации - это очень хороший способ легко протестировать эти важные пути кода вашего приложения, которые в противном случае выполняются гораздо реже, но все же приведут к сбоям в руках ваших пользователей.

Чтобы переносить активные объекты между экземплярами Activity, используйте новую статическую библиотеку фрагментов, которая позволяет создавать фрагменты, которые сохраняются для вас в разных экземплярах.

person hackbod    schedule 17.03.2011
comment
Можете ли вы указать мне на что-нибудь, что более подробно объяснит фрагмент, который сохраняется для вас в разных экземплярах? - person fhucho; 24.10.2011
comment
developer.android.com/reference/android/app/ (Извините, что ссылка не работает - я не знаю, как разместить такие ссылки в StackOverflow. Вам нужно будет добавить закрывающую скобку в конце.) - person hackbod; 25.10.2011
comment
@hackbod: к сведению, для ссылок на методы в Android JavaDocs я использую сокращатель URL (в частности, goo.gl, любезно предоставленный расширением Chrome). - person CommonsWare; 26.10.2011
comment
@hackbod: Я понимаю, что опаздываю на эту вечеринку, но действие / фрагмент с VideoView кажется хорошим кандидатом для отключения изменений конфигурации. Я пробовал setRetainsInstance (), и мне кажется, я не могу избежать воссоздания / повторной буферизации VideoView. См. stackoverflow.com/questions/17513763/. Я что-то упускаю? - person mikejonesguy; 26.03.2014