AsyncTask никогда не завершается, когда выполняются другие задачи - PullRequest
2 голосов
/ 07 февраля 2011

В моем приложении я сразу показываю пользователю экран меню, а затем использую AsyncTask для загрузки некоторых данных с диска.Загрузка занимает около 3 секунд, если это все, что должно было сделать приложение.Когда пользователь нажимает на пункт меню и данные еще не загружены, появляется экран «Пожалуйста, подождите, загрузка».

У меня две проблемы:

  • Iнедавно добавил рекламу в мое приложение и обнаружил, что это иногда приводит к зависанию моего приложения, потому что AsyncTask никогда не завершает загрузку.Похоже, происходит то, что рекламный баннер (я использую AdMob, и это происходит, когда показываются объявления AdSense, которые AdMob время от времени делает) использует ресурсы, воспроизводя простую анимацию, и у AsyncTask никогда не появляется шанс закончить.

  • Я хочу воспроизвести простую циклическую анимацию (например, сделать поворот вида) на экране моего меню, и это заставляет AsyncTask занимать примерно в 5 раз больше времени, что делает фоновую загрузку бессмысленной.

Как мне избежать ситуаций, когда мои фоновые данные никогда не заканчивают загрузку или имеют такой низкий приоритет, что это занимает много времени?

Iне могу найти способ увеличить приоритет AsyncTask.

1 Ответ

0 голосов
/ 08 февраля 2011

В AsyncTask onPostExecute(List<type> result) проверьте, не равен ли результат нулю (имеется в виду, что диалог был закрыт), а затем заполните ваш результат в основном классе.Вы должны отправить результат из doInBackground() в onPostExecute(). Then only it will call onPostExecute () `.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...