Comment arrêter un Android SEULEMENT quand il n'y a pas d'autres activités dans mon application en cours d'exécution?
Est-il un moyen que je puisse tester si il y a d'autres activités dans mon application est-elle encore en vie? Je suis à la recherche de l'arrêt d'un service dans une méthode onDestroy, mais qui ne veulent pas le faire si il n'y a pas d'autres activités à partir de mon application est encore en vie sur la pile.
J'ai l'appel d'arrêter le service l'activité principale de onDestroy() la méthode. Cela fonctionne parfaitement SAUF que, si un utilisateur lance mon application, puis lance un peu d'activités dans mon application, puis frappe l'écran d'accueil et RELANCE mon application, ils vont renverser ma commande et la principale activité sera désormais au-dessus des autres activités de mon application. À partir de cet état, si ils ont frappé le bouton "retour" et "retour" de mon écran d'accueil ils vont déclencher le onDestroy() la méthode et de tuer le service, même si il y a d'autres activités ouvertes sur la pile. Je veux éviter cela arrêter le service, SEULEMENT si je suis sûr qu'il n'y a pas d'autres activités de la mine ouverte sur la pile. Possible?
OriginalL'auteur JohnRock | 2010-03-13
Vous devez vous connecter pour publier un commentaire.
Ne pas utiliser
startService()
etstopService()
. Au lieu de cela, utiliserbindService()
etunbindService()
, même si vous n'avez pas vraiment besoin de la connexion liée. Le lier/délier de référence est comptée. Si vous appelezbindService()
avec leBIND_AUTO_CREATE
drapeau, le premierbindService()
appel de votre service. Puis, quand tout lebindService()
appels ont eu de correspondanceunbindService()
appels, Android va s'éteindre automatiquement votre service."Vous voulez dire que CHAQUE action dans mon application doit appeler bindService() afin de le maintenir en vie ?" En supposant que vous avez voulu dire "TOUTE Activité", alors je n'ai aucune idée. Vous êtes le gars en charge de ce que les activités de la garder en mémoire et ce qui n'est pas. "Et, chaque activité, puis aussi appel unbindservice dans sa méthode destroy?" Chaque activité qui lie le service doit supprimer la liaison de service. "Comment fonctionne le service push de données pour l'actif lié à l'activité?" Même manière que vous l'avez fait aujourd'hui.
Chaque Activité, où vous voulez que le Service de commencer/continuer à fonctionner, a besoin de faire appel
bindService()
pendantonStart()
etunbindService()
dansonStop()
. Voir aussi: stackoverflow.com/questions/2304086/... à Votre service "pousse" les données pour lier les activités de la même façon que si vous avez utiliséstartService()
: vous inscrire un rappel avec le service.OriginalL'auteur CommonsWare