Android: рекомендуется использовать AsyncTask для периодической загрузки интернет-данных и повторять их при неудачной загрузке. - PullRequest
0 голосов
/ 19 февраля 2011

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

Я пытался использовать AsyncTask, чтобы выполнить эту работу, но мой код уродлив, я хочу знать, есть ли какое-нибудь элегантное решение, чтобы справиться с этим.

У меня есть некоторые проблемы:

  1. Перезагрузите быстро , когда первая загрузка не удалась. Для слов быстро я имею в виду, что я не хочу ждать следующего момента времени обновления, чтобы загрузить его снова, потому что данные не загружаются в первый раз, поэтому мне нужно загрузить его как можно скорее.
  2. После успешной загрузки запустите действие периодического обновления. Если загрузка не удалась в одном действии, не нужно повторять попытку, так как данные были загружены ранее, я могу просто подождать следующего обновления.
  3. Прекратить действие повтора, если оно существует, или периодическое обновление, когда действие становится невидимым
  4. Возобновить действие повтора или периодическое обновление, когда действие становится видимым, тем не менее, действие повтора должно произойти быстро , но при периодическом обновлении я могу захотеть проверить время последнего обновления и сравнить его с текущим время, чтобы определить, следует ли начинать периодическое обновление прямо сейчас или позже.

Звучит сложно, есть хороший пример кода для этих требований?

1 Ответ

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

Просто выполните следующие шаги

  1. Объявите задачу и расписание таймера с помощью таймера с помощью метода scheduleAtFixedRate(TimerTask task, long delay, long period)

    закрытый класс MyTask extends TimerTask {public void run (){// Вызов вашей асинхронной задачи с помощью execute}}

  2. объявление обработчика

  3. Когда асинхронная задача выполнена либо при получении изображения, либо при ошибкечтобы сделать это .. отправить пустое сообщение на экземпляр объекта-обработчика

  4. в обработчике, чтобы отменить асинхронную задачу

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