Сбой приложения при использовании фрагментов с действиями в Android 2.2 - PullRequest
0 голосов
/ 12 января 2012

Я занимаюсь разработкой приложения, которое загружает много данных из базы данных, поэтому я использую AsyncTasks для них.

Вот общий взгляд на то, что я создаю. У меня есть 2 действия, скажем ActivityA и AcitivityB. ActivityB имеет количество фрагментов, которые загружают данные из базы данных. Поэтому я использовал разные AsyncTask для каждого фрагмента, который загружает данные.

Теперь моя проблема в том, что, когда я нажимаю кнопку «Назад» на моем устройстве, когда фрагмент загружается, чтобы вернуться в ActivityA, происходит сбой приложения, поскольку ActivityB больше не доступен. Как мне исправить эту проблему?

Я использую библиотеки поддержки для Android 2.2.

Ответы [ 3 ]

0 голосов
/ 12 апреля 2012

Я не большой поклонник try catch, чтобы проглотить исключения. Вы не устраняете основную причину.

Вот то, что я думаю, происходит.

Когда вы нажимаете кнопку «Назад», чтобы вернуться к ActivityA, представления фрагментов в Activity B уничтожаются, но запущенная AsyncTask продолжает выполняться, и когда она выполняется, из пользовательского интерфейса вызывается метод onynSostExecute (result) AsyncTask нить. Я предполагаю это, где вы обновляете свои фрагменты просмотров. Но если представления уже были уничтожены, вы получаете исключение NullPointerException, и поэтому всегда полезно проверять нулевые представления фрагментов перед тем, как пытаться их обновить.

0 голосов
/ 11 августа 2012

Лучше показывать ProgressDialog, пока процесс выполняется в фоновом режиме, и сделать его не подлежащим отмене, чтобы при нажатии кнопки назад он не позволял никаких действий.Показать диалог в onPreExecute() и отклонить в onPostExecute().При загрузке данных в фоновом режиме нет возможности обратной навигации.Вы будете получать обновления в потоке пользовательского интерфейса, а также никаких шансов на исключение и сбой приложения.

0 голосов
/ 13 января 2012

Я получил ответ.Просто добавьте весь код в блок try catch, который предотвратит сбой приложения, даже если действие / фрагмент генерирует исключение.

...