Я ценю многочисленные сообщения об AsyncTask об изменении ротации. У меня возникает следующая проблема при использовании библиотеки совместимости и попытке отклонить DialogFragment
в onPostExecute
.
У меня есть фрагмент, который запускает AsyncTask, который отображает прогресс DialogFragment
, затем в onPostExecute
закрывает диалоговое окно, а затем потенциально вызывает другой DialogFragment
.
Если при отображении диалогового окна прогресса я помещаю приложение в фоновый режим, я получаю следующее для своего фрагмента:
1) onPause
2) onSaveInstanceState
3) onPostExecute
, в котором я пытаюсь закрыть и вызвать диалоговое окно.
Я получаю IllegalStateException
, потому что я пытаюсь эффективно зафиксировать транзакцию, когда операция сохранила свое состояние, и я это понимаю.
При ротации я предположил (возможно, ошибочно), что не получу onPostExecute
, пока действие не будет воссоздано. Однако, переводя приложение в фоновый режим, я предположил (определенно неправильно), что onPostExectute
не будет вызываться, пока фрагмент / действие были приостановлены.
Мой вопрос: могу ли я просто обнаружить в onPostExecute
, что фрагмент / действие приостановлено, и просто выполнить то, что мне нужно сделать в onResume
вместо этого? Мне это кажется несколько некрасивым.
Заранее спасибо, Питер.
Редактировать 1
Требуется поддержка версии 2.1 и выше
Редактировать 2
Я рассмотрел возможность отображения диалогового окна с использованием FragmentTransaction: add
и FragmentTransaction: commitAllowingStateLoss
, однако это не без проблем.