Я некоторое время искал это. Как правильно обрабатывать изменения ориентации экрана, когда у меня есть отдельный запуск Thread
/AsyncTask
? В настоящее время у меня есть
android:configChanges="orientation|keyboard|keyboardHidden"
в моем AndroidManifest.xml
, но это не рекомендуется:
Примечание.. Использовать этот атрибут следует избегать и использовать только как последний. Пожалуйста, прочитайте "Обработка изменений времени выполнения" для получения дополнительной информации о том, как правильно обрабатывать перезапуск из-за изменения конфигурации.
Кроме того, в эмуляторе 2.3 он работает при переключении на landscape
, но сбой на portrait
завершается с ошибкой.
Теперь причина, по которой я использую configChanges
, заключается в том, что когда пользователь переключает ориентацию, я могу запустить AsyncTask
, сделать некоторый сетевой трафик, и я не хочу, чтобы он остановился.
Есть ли другой способ сделать это, или есть способ исправления 2.3, чтобы вернуться к портрету?
Я знаю о onRetainNonConfigurationInstance
, но я не уверен, что было бы неплохо "сохранить" экземпляр AsyncTask
, главным образом потому, что класс, который расширяет AsyncTask
, не является статическим (поэтому он привязан к Activity
) - и это должно быть, потому что в onPostExecute()
он вызывает методы из экземпляра Activity
.