Android - le Meilleur moyen de mettre en œuvre: LocationListener à travers de multiples activités

J'ai été coincé sur ce problème depuis un certain temps. Je suis en train de travailler sur une application qui utilise emplacement assez largement dans plusieurs Activités différentes. Tous les exemples que j'ai trouvé utilise un autre: LocationListener dans chaque Activité. Ce n'est pas possible dans ma situation.

Je me demande quel est le moyen le plus efficace pour garder une trace de l'emplacement de l'utilisateur à travers plusieurs activités. Droit maintenant, j'ai créé un service qui met en œuvre: LocationListener et utilise une diffusion statique de la mise à jour lat et long champs dans une base de l'Activité de la classe. Cela signifie que le service est toujours en cours d'exécution, ce qui n'est pas l'idéal. Mais si j'ai arrêté le service et de le redémarrer que lorsque j'en ai besoin, il faut du temps pour obtenir un bon emplacement. J'ai besoin de l'emplacement des données dans l'Activité de onCreate(). Il en va de même si j'essaie de la mettre en œuvre dans l'activité de la classe de base. Si je ne cesse de vous inscrire à l'auditeur dans onResume/onCreate et annuler l'inscription dans onPause(), ça prend trop de temps pour commencer à recevoir des mises à jour. J'ai aussi essayé de créer un service que j'ai pu lier, afin qu'elle ne commence que lorsque j'ai besoin d'un endroit. Mais j'ai le même problème, ça prend trop de temps à se lier pour le service et obtenir des mises à jour.

Le service que j'utilise fonctionne maintenant, mais de tout ce que j'ai lu, je ne devrais pas être constamment à l'aide d'un service en cours d'exécution pour des futilités de ce genre. Mais le point de l'ensemble de l'application est de fournir des données pertinentes en fonction de l'utilisateur de l'emplacement actuel. J'ai donc un service qui fonctionne dans le fond et fournit des mises à jour périodiquement. L'un des grands problèmes qui m'ont poussé à revoir le design est à ce moment que j'ai découvert récemment que onProviderEnabled() n'est pas appelée si l'utilisateur démarre l'application sans GPS activé, puis par la suite le permet. Dans ce scénario, l'application dispose d'aucun moyen de reconnaître que le GPS est activé de sorte qu'il peut commencer à l'écoute pour les mises à jour.

J'ai cru comprendre LocationManager et: LocationListener en regardant les exemples, mais je n'arrive pas à l'appliquer à cette situation, où j'ai besoin de l'emplacement des données dans de multiples Activités. De l'aide ou des conseils seraient grandement appréciés.

InformationsquelleAutor d370urn3ur | 2011-04-25