2011-11-29 5 views
0

J'ai un petit conseil avec une chose que je veux accomplir dans mon application. Je souhaite que mon application synchronise certaines données sur Internet à chaque démarrage et l'idée est que j'ai une barre d'actions personnalisée qui contient une barre de progression de cercle et que je veux que cette barre de progression s'exécute lorsque je télécharge les données le téléchargement est terminé. Et je veux le faire dans toutes les activités de mon tabhost (j'en ai 2 dans ma demande et je veux le faire dans le principal). J'ai déjà essayé avec thread et async task, mais si je change d'activité et que je reviens, la barre de progression ne tourne pas, même avec les threads. Suis-je manquer quelque chose ou je devrais essayer avec le service aussi.service Android/tâche asynchrone/thread

Ou quel est le meilleur moyen d'y parvenir?

+0

Votre code s'il vous plaît? – ingsaurabh

+0

c'est beaucoup de code mec, je veux juste savoir quelle est la meilleure façon d'accomplir cela et quoi utiliser. le code que j'utilisais fonctionnait bien, mais le problème est que, pour autant que je sache, le cycle de vie d'asynctask dépend du cycle de vie de l'activité, les threads sont similaires. Si vous pouvez me fournir un moyen d'obtenir cela si un thread est en cours d'exécution, puis obtenir le temps quand il est fini et faire des choses à la fin, je serai heureux, mais l'idée de cette question est d'obtenir des suggestions qui est le meilleur façon de le faire. –

+1

Vous devriez être en mesure de le faire avec 'AsyncTask' – Caner

Répondre

1

Vous devez prendre en charge les cycles de vie des activités. En supposant que vous téléchargiez les mêmes données pour toutes vos activités (comme je le fais avec les mises à jour des meilleurs scores dans mes jeux), le meilleur moyen (avec lequel je pourrais venir) est de créer un thread séparé, mais une seule fois ceci, donc je ne commencerai pas à télécharger deux fois). Lorsque le téléchargement est prêt, il déclenche l'intention afin que les activités puissent le savoir et mettre à jour l'interface utilisateur correctement.

Donc flux de travail est comme ceci:

  • activité CV
  • obtenir par exemple singletoin
  • téléchargement de départ dans le cas où il n'est pas actif/nécessaire
  • interface mise à jour indiquant que le téléchargement est en cours . ..
  • recevoir notofication diffuser et mettre à jour UI

Je suis également capable de réutiliser ce code pour le récepteur de diffusion, ainsi je peux programmer des mises à jour périodiques de highscore (même si le jeu n'est pas actif pour le moment)