1

Mon application fait plusieurs appels à getFromLocationName de la classe android.location.Geocoder;, ceci est actuellement géré dans mon activité qui affiche également des données dépendant sur les résultats de cet appel.Android; mise en cache des données de géocodage?

Cela peut être assez lent, par exemple, avant que l'activité ne puisse se charger, elle doit d'abord terminer les divers appels, et cela dépend d'une connexion réseau.

Une fois que je les résultats, je ne pas vraiment besoin de rafraîchir que (je veux dire à quelle fréquence les emplacements et les coordonnées géographiques changer?)

Ma question: Comment puis-je mieux éviter d'avoir à interroger pour ces données chaque fois que mon application fonctionne. Dois-je faire quelque chose avec un service qui les charge tous au démarrage? (pourrait être assez lent s'il doit interroger plus de 50 fois). OU devrais-je faire l'appel, stocker les résultats dans SQL, puis interroger la prochaine fois si je ne détient pas actuellement les résultats?

Répondre

2

Si vous voulez le mettre en cache rapidement, je vous recommande de stocker les résultats les plus récents dans une base de données SQLite. Vous pourriez probablement même s'en tirer en utilisant le PreferenceManager pour le stockage rapide si vous n'avez pas besoin de la base de données pour autre chose. Enregistrez simplement les dernières coordonnées et le datetime, puis vérifiez si le datetime a expiré après X minutes ou X heures (si c'est ce que vous voulez faire).

+0

Eh bien, je n'aurais pas besoin de SQL Lite pour autre chose (à ce stade). Existe-t-il un compromis de performances à prendre en compte, c'est-à-dire est-il plus rapide que d'interroger manuellement le service de localisation à chaque fois? – Jimmy

+1

@James Je dirais que les facteurs les plus importants est que 1) il est stocké localement sur votre téléphone et rapide pour accéder 2) obtenir vos coordonnées GPS prendra un certain temps pour le gps à verrouiller (ou via des tours de téléphonie cellulaire si le GPS est éteint). Donc, la vitesse sera rapide, mais le plus gros problème est de savoir à quel point les dernières coordonnées GPS ont été "froides" ou périmées (à quel point elles sont récentes). Et vous devrez toujours trouver les coordonnées la toute première fois. Et les utilisateurs peuvent bouger beaucoup (si par exemple, une voiture). Je pense toujours que le cache pourrait vous aider (peut-être donner à l'utilisateur une option d'actualisation GPS manuelle?) –

+0

Semble bien, qu'en est-il de la requête initiale et du stockage/lecture de SQL Lite, devrait-il rester dans un service? en activité? (Juste brancher pour des conseils ici) – Jimmy