Le meilleur moyen d'exécuter périodiquement AsyncTasks dans Android
Je suis l'obtention de données à partir du serveur à l'aide de AsyncTask
. J'ai besoin de mettre à jour les données périodiquement.
Quel est le meilleur moyen de le faire?
source d'informationauteur Kunal P.Bharati
Vous devez vous connecter pour publier un commentaire.
Vous pourriez utiliser la classe Timer pour programmer tâche périodique à l'aide de TimerTask au lieu de AsyncTask
Voir :
http://developer.android.com/reference/java/util/Timer.html
http://developer.android.com/reference/java/util/TimerTask.html
Et de mettre à jour votre INTERFACE utilisateur, vous devez suivre ce bon tutoriel :
http://android-developers.blogspot.com/2007/11/stitch-in-time.html
Définir une alarme avec AlarmManager et appelez votre
AsyncTask
dans votreAlarmReceiver
classe.Vous pouvez le faire sur votre
onProgressUpdate()
ou suronPostExecute()
en fonction de votre exigence.onProgressUpdate(Progress...)
invoquée sur le thread de l'INTERFACE utilisateur après un appel à publishProgress(le Progrès...). Le moment de l'exécution n'est pas défini. Cette méthode est utilisée pour afficher toute forme de progrès dans l'interface utilisateur, tandis que le calcul d'arrière-plan est toujours en cours d'exécution. Par exemple, il peut être utilisé pour animer une barre de progression ou afficher les journaux dans un champ de texte.onPostExecute(Result)
invoquée sur le thread de l'INTERFACE utilisateur après le calcul de fond de finitions. Le résultat du calcul d'arrière-plan est transmis à cette étape en tant que paramètre.http://developer.android.com/intl/de/reference/android/os/AsyncTask.html
Juste à l'état l'une des possibilités. Vous pouvez également utiliser ScheduledThreadPoolExecutor classe. Il a, en général, plus les possibilités de puis TimerTask.
Développer macarse's réponse, vous pouvez en effet "définir une alarme avec AlarmManager et appelez votre AsyncTask dans votre AlarmReceiver classe."
La préoccupation que j'ai soulevées dans le message lié tient toujours: je ne sais pas s'il y a des enjeux du cycle de vie associés à l'instanciation d'un AsyncTask à partir d'un WakefulBroadcastReceiver, c'est à dire, je ne sais pas si la solution ci-dessus peut conduire à MyAsyncTask être tué prématurément.