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