Comment tuer un android?
Je suis en train d'écrire une application qui a une longue durée d'exécution d'un service.
J'ai écrit certains de l'état d'économie de code dans le service de onDestroy
méthode.
Mon intention est que ce doit être invoquée si le service se fait jamais tué par Android, en raison de la pression de la mémoire.
Comment puis-je simuler le service d'être tué par la pression de la mémoire?
J'ai essayé adb shell am force-stop com.example.app
mais le service est onDestroy
méthode n'a pas été invoquée.
Est onDestroy
un bon site pour le service d'arrêt à l'état d'économie d'?
Si oui, comment puis-je faire un service onDestroy
être invoquée par Android, pour le débogage/des fins de test?
onDestroy()
ou non dépend un peu sur les considérations environnementales. "comment puis-je faire un service onDestroy être invoquée par Android?" -- l'appel stopService()
à partir de votre suite de tests, avec une Intent
identification de votre service.qui déclenche onDestroy() ou non dépend un peu sur les considérations environnementales." Si
onDestroy
n'est pas toujours appelée, où dois-je site l'état d'économie de code?"Si onDestroy n'est pas toujours appelée, où dois-je site l'état d'économie de code?" -- au moment où les changements d'état.
J'ai vu une solution similaire ici - stackoverflow.com/questions/3117095/... Aussi, je suppose que rien de la méthode sera exécutée lorsque l'application se bloque de sorte que vous pouvez le manipuler dans une exception non interceptée. Consultez cette stackoverflow.com/questions/19945407/...
OriginalL'auteur fadedbee | 2015-09-16
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez pas compter sur
onDestroy()
parce que c'est seulement appelé, lorsque le service est correctement arrêté (en appelantstopService()
oustopSelf()
méthode).Si vous voulez économiser de l'état de service, vous devez les enregistrer comme vous allez (par exemple un service de joueur peut stocker lorsque la fonction de lecture/pause est activé), ou d'utiliser une minuterie pour enregistrer périodiquement.
Si vous souhaitez réagir à des événements de la mémoire, vous devez utiliser
ComponentCallbacks2
classe, qui vous informera, quand Android a besoin de plus de mémoire. Si vous libérez de la mémoire à l'intérieur de ces rappels, vous augmentez la probabilité de votre service restera dans la mémoire plus de.Espère que cette aide.
OriginalL'auteur sergej shafarenka
Une force d'arrêt ne vais pas appeler
onDestroy
sur tous les composants, ni service, ni de l'activité. Il se ferme complètement l'application, sans autres considérations.Je ne suis pas sûr de cela, mais si votre service n'est pas en cours d'exécution comme premier plan de service, vous pouvez la fermer par la suppression de l'application des récentes menu des applications.
OriginalL'auteur Navid Eivazzadeh
Si vous voulez arrêter par programmation de votre
Service
, dans leService
, appelstopSelf()
.Tu peux aussi aller sur les paramètres de l'application et en faire une force d'arrêt.
Comment voulez-vous désinstaller une application? Habituellement, il y a un écran dédié à cela et a un "FORCER l'ARRÊT".
J'utilise
adb shell pm uninstall com.example.app
, ou google play, pour désinstaller une application. Je n'ai pas encore vu l'écran où je peux désinstaller une application sur le téléphone.Trouvé, merci - un appui long sur le bouton home a une liste des activités.
Android va tuer des Services de l'impolitesse comme @Commonsware dit. L'impolitesse de sens onDestroy de ne pas être invoquée.
OriginalL'auteur akodiakson