2010-08-12 9 views
2

Mon application a un IntentService qui s'exécute périodiquement à télécharger les données d'un serveur distant. La tâche de téléchargement est exécutée à l'intérieur d'une asyncTask qui ne fait référence qu'au contexte d'application.Façons de notifier les activités de téléchargement achèvement

Les données téléchargées sont pour l'ensemble de l'application et sont affichées sur quatre activités différentes. Lorsque le téléchargement se termine (AsyncTask se termine) le service est averti de la même chose. Maintenant, le service a besoin de pour notifier l'activité appropriée pour mettre à jour sa vue. Le service n'est pas conscient de quelle activité de quelle application est en avant-plan.

Comment établir cette connexion? Comment le service transmet-il un message à l'activité au premier plan que les nouvelles données sont disponibles et il doit mettre à jour ses vues?

Aidez-nous s'il vous plaît.

Merci.

+0

Pourquoi utilisez-vous AsyncTask? IntentService est déjà async be design, en réalité en utilisant AsyncTask, le service peut s'arrêter pendant que vous exécutez. – alexanderblom

+0

oui. Je prévois de changer cela. – Samuh

Répondre

3

Une façon est d'envoyer un broadcast, et si vous avez différents types d'activités celui qui est actif le recevra.

+0

Je ne pense pas que les activités peuvent recevoir des intentions envoyées via context.sendBroadcast(). Si le service diffuse une intention, je devrai écrire un récepteur de diffusion pour capturer l'intention. Comment le récepteur de diffusion identifiera-t-il quelle activité est en premier plan? Je ne peux pas démarrer les activités car l'utilisateur sera redirigé vers de nouveaux écrans, ce qui est inattendu. Corrigez-moi si je me trompe ici. – Samuh

+0

Les activités peuvent recevoir la diffusion si vous implémentez un récepteur de diffusion anonyme dans votre activité. – Pentium10

+0

obtenu confus d'abord, quand j'ai lu votre réponse. :) Merci! – Samuh

Questions connexes