2010-05-31 4 views
0

Je n'ai pas besoin d'une réponse stricte liée au code J'ai juste besoin de quelqu'un pour me dire ce qui me manque. Mon application doit extraire d'un service Web (xmlrpc) les positions de certains utilisateurs que je connais et mettre à jour leur position sur un MapView. J'ai donc décidé d'utiliser un service et une activité qui étend MapActivity pour afficher les résultats. J'ai pensé à deux solutions:android utiliser le service local pour rafraîchir la carte UI

I) démarrer le service et le faire demander toutes les minutes pour ces positions et les envoyer à l'activité en tant que paquet intentionnellement. (Cela n'a pas bien fonctionné, puisqu'une fois montré je n'ai pas pu trouver une méthode pour laisser l'activité se régénérer jusqu'à ce qu'elle cesse de recevoir des intentions + données du service)

II) Incorporer un fil dans l'activité qui démarre le service via context.startService (...) toutes les minutes. Et le MapUI se rafraîchit une fois que le service renvoie une intention et s'arrête lui-même. (Peut-être que je tomberai dans la même catégorie de problème qu'avant je n'ai pas encore essayé).

Je donne aussi des directions (via maps.google ws) de cette façon Je voudrais actualiser uniquement les positions des utilisateurs sur la carte et enregistrer l'itinéraire. Qu'est-ce qui me manque avez-vous des suggestions? liés à la mécanique interne des activités/services, ne connaissent pas les modes de lancement, utilisent des récepteurs de diffusion ou des filtres d'intention? Merci d'avance

Répondre

1

Vous pouvez utiliser AlarmManager avec setRepeating(), de cette façon, vous pouvez envoyer une intention périodiquement pour démarrer/mettre à jour votre service. Vous devriez vraiment séparer la récupération des données (service) et la mise à jour de l'interface utilisateur Activiy (à partir d'une base de données?).

Sinon, vous devrez peut-être bind your activity au service, et communicate via an interface.

Mes 2 cents

Questions connexes