Лучший способ периодически выполнять AsyncTasks в Android

Я получаю данные с сервера с помощью AsyncTask . Мне нужно периодически обновлять данные.

Каков наилучший способ сделать это?

Solutions Collecting From Web of "Лучший способ периодически выполнять AsyncTasks в Android"

Вы можете использовать класс Timer для планирования периодической задачи с использованием TimerTask вместо AsyncTask

Видеть :

http://developer.android.com/reference/java/util/Timer.html

http://developer.android.com/reference/java/util/TimerTask.html

И для обновления вашего пользовательского интерфейса вы должны следовать этому хорошему руководству:

http://android-developers.blogspot.com/2007/11/stitch-in-time.html

Установите будильник с помощью AlarmManager и вызовите свою AsyncTask в свой класс AlarmReceiver .

Вы можете сделать это либо на своем onProgressUpdate() либо onPostExecute() на основе вашего требования.

onProgressUpdate(Progress...) , вызывается в потоке пользовательского интерфейса после вызова publishProgress (Прогресс …). Время выполнения не определено. Этот метод используется для отображения любой формы прогресса в пользовательском интерфейсе, пока фоновое вычисление все еще выполняется. Например, его можно использовать для анимации индикатора выполнения или отображения журналов в текстовом поле.

onPostExecute(Result) , вызывается в потоке пользовательского интерфейса после завершения фонового вычисления. Результат вычисления фона передается на этот шаг в качестве параметра.

http://developer.android.com/intl/de/reference/android/os/AsyncTask.html

Просто укажите одну из возможностей. Вы также можете использовать класс ScheduledThreadPoolExecutor . У него, как правило, больше возможностей TimerTask.

Чтобы уточнить ответ на макару , вы действительно можете « настроить будильник с помощью AlarmManager и вызвать свою AsyncTask в своем классе AlarmReceiver» .

Я не знаю, есть ли какие-либо проблемы с жизненным циклом, связанные с созданием AsyncTask из WakefulBroadcastReceiver, т. Е. Я не знаю, может ли вышеупомянутое решение привести к тому, что MyAsyncTask будет убит преждевременно ,