В моей деятельности у меня есть асинтаза, которая загружает серию изображений ... (это может занять некоторое время в зависимости от размера изображений) ... до того, как я запустил asynctask, я покажу диалог прогресса в onPreExecute
и уведомление (когда пользователь нажимает на уведомление, он перенаправляется на мою активность с диалоговым окном выполнения). когда моя asynctask завершается, в onPostExecute
, я удаляю диалог и уведомление. Я обрабатываю ориентацию экрана, используя onRetainNonConfigurationInstance
, чтобы сохранить мою асинтезу, чтобы при повороте экрана я проверял, все ли запущена задача, и я показываю диалог выполнения, если он все еще работает в onCreate
предотвратить уничтожение aynctask до завершения?
Проблема: иногда: моя асинтаза загружает только 1 файл, и кажется, что он убит ... (без исключения в logcat) ... в результате моя заметка всегда есть и мой прогресс диалог также ... и они остаются там до бесконечности ....
я попробовал решение Джеффа Аксельрода там: How can I ensure an AsyncTask is completed before my activity is killed?:
It looks like if I override the onPause() event in my activity, and from within the overridden onPause(), I call cancel(false) on the AsyncTasks, then the activity is not destroyed until the AsyncTasks are completed.
, похоже, делает трюк, но проблема в том, что мой onPostExecute
больше не вызывается; все изображения загружаются хорошо, но поскольку onPostExecute
не выполнен, диалог уведомлений и прогресса все еще остается там навсегда.
ждет ваших решений, ребята! я читаю использование asyntask только для короткой задачи; будет ли использование потока и обработчика решает мою проблему? будет андроид убивает мою деятельность или поток, если последний не закончен ???
thx для этого хорошего руководства, но это все еще не объясняет, почему моя aynctask никогда не завершается, если я не поместил 'cancel (true);' в мое событие активности onPause – yeahman
Затем опубликуйте свой код, чтобы мы могли его изучить. Мой плохой я не указал его прямо, но вы не должны использовать 'onRetainNonConfigurationInstance' и вместо этого использовать описанный метод. – Gustek