Я ценю многочисленные сообщения об AsyncTask об изменении ротации. У меня есть следующая проблема при использовании lib совместимости и пытается отклонить 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
, но это не без проблем.