Android: onDestroy() ou une méthode similaire à la classe d'Application
Je suis d'étendre l'Application de la classe de travailler avec des variables globales qui ont besoin du contexte. Je sais qu'il est onCreate() la méthode dans la classe d'Application qui est appelée avant toute autre onCreate() dans les activités, mais je voudrais savoir si il y a onDestroy() ou une méthode similaire dans la classe Application qui pourrait être remplacée de sorte que je serais capable de stocker des variables en mémoire persistante, annuler l'enregistrement de l'auditeur et de l'envoyer dernier message au serveur avant d'app processus se fait tuer? Si non, est-il un autre moyen pour le faire?
- Non, cela, dans les méthodes appropriées de
Activity
ouService
- Déjà fait. Ce qu'une nuisance. En fait, la raison pour laquelle je suis à l'extension de l'application est parce que l'utilisation d'android me donne envie de pleurer... ou de sauter de l'immeuble 🙁
Vous devez vous connecter pour publier un commentaire.
Il n'existe pas de retour d'appel sur un appareil de production pour la classe d'Application.
Les choses que vous voulez faire doit généralement être fait droit, après les changements, ou dans le
onPause()
de l'application respective composant.Dans android, il n'y a pas de concept de la fermeture d'une application. Il suffit à l'utilisateur de feuilles : c'est le seul événement que vous serez au courant de (
onPause()
dans une activité). Vous devez adapter la conception de votre application pour s'adapter à ce cycle de vie.Vous ne devriez pas essayer de trouver une solution, il peut juste faire empirer les choses : si l'utilisateur est à court de batterie, ou si votre application se bloque? toutes les données seront perdues. Je ne sais pas quel type de données que vous travaillez avec, mais c'est généralement suite à une mauvaise note sur Google Play. Même si quelque chose de mauvais arrive, toutes les données déjà enregistrées (
AsyncTasks
sont parfaits pour cela, n'ayez pas peur de commencer une sur chaque changement de constamment enregistrer les données).Tout d'abord: je suis un débutant absolu
J'ai besoin d'exécuter du code lorsque mon appli des sorties (oui, je sais que pas une telle chose dans Android) et cela fonctionne bien pour moi:
-J'ai MyApplication qui étend le champ d'Application. En tant que membre de MyApplication il y a un AtomicInteger champ nommé activeActivitiesNumber et une méthode de lecture.
-Toutes les activités d'application de prolonger MyActivy (qui lui-même extendes Activité)
-MyActivity remplace onCreate, onResume et onStop méthodes et ont également un champ protégé:
Protégé MyAppication mAppState;
Il a un problème: si vous démarrez une activité tan ne pas appartenir à votre application (par exemple, envoyer un e-mail), cela va déclencher la sortie de la méthode.
Un autre problème (ne sais pas si c'est un vrai s théorique) est qu'il n'y a aucune garantie tan, dans certaines situations, onStop sera appelée.
Espérons que cette aide.
Vous pouvez remplacer
onDestroy()
dans leActivity
qui sera le dernier fermé dans votre application et de vérifier si c'est la finition. Dans ce cas, votre code ne sera pas invoquée sur un dispositif de rotation. Mais vous devez être conscient queonDestroy()
n'est pas invoquée lorsqu'une application est fermée par le biais de l'appareil bouton de la maison.Vous pouvez utiliser
registerActivityLifecycleCallbacks()
dans la classe d'Application avec les rappels suivants (je recommande la création d'unAppLifecycleCallbacks
classe qui étend laActivityLifecycleCallbacks
):Une autre option que vous avez est de remplacer onDestroy() sur le premier écran de votre application, de sorte qu'il sera appelée juste avant que votre processus est tué!
for a single-activity app that doesn't allow rotation (or is careful to detect this), so long as it's not 100% vital that the cleanup code gets run
Semble très loin de “cas général” 🙂