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