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