Comment puis-je arrêter GPS/suivi de localisation lors de mon Activité de fin?
J'ai une question très simple pour Android, qui affiche une carte Google Maps vue et utilise le GPS pour suivre la position (essentiellement comme):
public void onCreate(Bundle savedInstanceState) {
//...
mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
//...
}
public void onResume() {
super.onResume();
mLocationManager.requestLocationUpdates(mProvider, 20000, 1, this);
}
public void onPause() {
super.onPause();
mLocationManager.removeUpdates(this);
}
public void onLocationChanged(Location location) {
mPosition = getGeoPointForLocation(location);
mMapController.setCenter(mPosition);
}
Et lorsque j'utilise la commande suivante pour quitter l'application (par exemple, par le biais d'un menu), le GPS garde sur le suivi de la - il semble que l'Activité est toujours en cours d'exécution:
//...
case R.id.menu_exit:
finish();
//...
Comment puis-je arrêter le suivi GPS si cela ne fonctionne pas par la suppression de l'emplacement gestionnaire de onPause()
et de l'appel de finish()
? Comme ce que j'ai lu des tutoriels ou autres questions, ce devrait être la solution..
- La commande removeUpdates est correct. Généralement, il serait préférable de remplacer onFinish() et supprimer les mises à jour là-bas. De cette façon, vous êtes plus sûr dans le cas où l'activité est détruite dans un autre moyen que le bouton de sortie. Mais puisque vous vous inscrivez le locationUpdates dans onResume, ne serait-il pas encore plus de sens à supprimer les mises à jour dans onPause()?
- btw - ne sont pas directement liées à votre question: pour plus de fonctionnalité améliorée plus tard, si vous voulez avoir le fonctionnement de l'application intérieure et extérieure et plus précis, jetez un oeil à ce post: stackoverflow.com/questions/3145089/...
- Je l'ai déplacé à
onPause()
(voir post original), mais encore le symbole GPS continue de clignoter lorsque je quitte l'application. Merci pour le lien, je vais vérifier ça! - L'icône GPS n'est pas retiré dans l'émulateur Android.
- Je suis sur un vrai téléphone (HTC Desire 2.2)
Vous devez vous connecter pour publier un commentaire.
Êtes-vous à l'aide de MyLocationOverlay? Cela vous donne la pulsation point bleu qui représente votre position actuelle. Je n'ai pas vu MyLocationOverlay dans votre exemple de code, mais je suis juste une double vérification.
Si vous utilisez MyLocationOverlay...
J'ai testé le code ci-dessous: avec et sans appel "disableMyLocation" quand je suis sortie un exemple d'application après avoir appuyé sur une "sortie" de la commande de menu. Quand je l'appelle "disableMyLocation", le suivi GPS s'éteint. Lorsque je n'ai pas l'appeler, le suivi GPS reste allumé après que j'appelle "terminer".
onCreate()
mais pas de contrepartie pour elle.Êtes-vous sûr que vous n'êtes pas à entrer à nouveau dans l'Activité? Êtes-vous sûr que vous êtes réellement arrêter le GPS? Essayez de faire un timer qui au bout de 2 secondes appels mLocationManager.removeUpdates(ce), juste pour s'assurer que vous pouvez réellement arrêter. Vous pouvez également vérifier si votre activité est en pause.