2012-04-25 5 views
1

J'ai une méthode onCreate qui exécute le code ci-dessous. En un mot, le code récupère les données du serveur et les affiche à l'écran pour un programme de messagerie. Il ne le fait qu'une seule fois, mais je voudrais qu'il lance l'AsyncTask toutes les 3 secondes (pour essayer de simuler un chat). Je suis sûr que ce n'est pas la manière d'avoir un système de chat, mais j'ai juste besoin de quelque chose qui fonctionne pour l'instant (comme preuve de concept) et je vais me concentrer sur la manière correcte de l'implémenter plus tard. J'ai essayé de mettre une simple instruction while autour de l'asynctask, mais elle force juste à se fermer.Comment exécuter un AsyncTask encore et encore?

+0

Quelle est la question? –

+1

Nous n'utilisons généralement pas AsyncTask pour une tâche périodique, consultez ma réponse [ici] (http://stackoverflow.com/questions/8098806/where-do-i-create-and-use-scheduledthreadpoolexecutor-timertask-or- gestionnaire/8102488 # 8102488) pour voir si cela aide. – yorkw

+0

York, votre réponse à cette question était parfaite. Cela a fonctionné pour moi et fait tout ce que j'avais besoin de faire. – EGHDK

Répondre

2

Vous ne pouvez pas réutiliser une instance AsyncTask. Vous devrez créer de nouvelles instances à chaque passage de votre boucle.

+0

Devrais-je essayer de créer une nouvelle instance, ou devrais-je emprunter une autre route (comme les chargeurs mentionnés par @Steve)? – EGHDK

+0

@EGHDK: Cela ne me semble pas être un scénario 'Loader'. Vous pouvez utiliser 'Timer' et' TimerTask', plus 'post()' sur votre 'TextView' pour obtenir ces mises à jour sur le thread d'application principal au lieu du thread de la tâche. – CommonsWare

+0

Donc, si quelqu'un trouve cela dans le futur. CommonsWare a donné la réponse à la question mais, York m'a donné la solution. Merci à tous pour votre temps. Je vous en suis reconnaissant. – EGHDK

0

Sans informations supplémentaires, il est difficile de vous donner une réponse précise. Cependant regarder dans tout abstraire en utilisant un Loader, en utilisant un Service, etc

En ce qui concerne Loaders:

  • Ils sont disponibles à chaque activité et Fragment.
  • Ils fournissent un chargement asynchrone de données.
  • Ils surveillent la source de leurs données et fournissent de nouveaux résultats lorsque le contenu change.
  • Ils se reconnectent automatiquement au curseur du dernier chargeur lorsqu'ils sont recréés après un changement de configuration. Ainsi, ils n'ont pas besoin de re-interroger leurs données.
+0

asyncTask exécute simplement la fonction 'getInbox()', qui obtient des informations du web en utilisant un script php. Un chargeur serait-il la bonne chose à utiliser pour cela? – EGHDK

Questions connexes