2010-10-20 12 views
0

J'ai lu this Article on StackOverflow. Selon cette étude, les variables statiques seront effacées, siComment effacer les variables statiques dans Android

  1. la classe est déchargée
  2. la machine virtuelle Java arrête
  3. le processus meurt

Mais comment détruire/tuer ma demande (processus d'application) et donc pour effacer toutes les variables statiques par programme de mon application ?!

Merci,

Mur

UPD

Ces variables statiques seront comblés par la lecture des données du serveur. Voici un flux de travail de test:

  1. Je commence l'application -> variables statiques seront remplis
  2. je vais à l'activité de la maison en appuyant sur le bouton retour -> finish() sera appelée
  3. J'éteins connexion Internet (Je suis sûr qu'il n'y a pas de connexion)
  4. je commence l'application againg
  5. Les variables statiques sont toujours remplies

Quelques idées?

Est-il possible de fermer toutes les activités d'une application? L'application sera-t-elle «fermée» dans ce cas?

Ps. Oui, je sais, ce n'est pas la meilleure façon d'utiliser des variables statiques, mais je ne suis pas l'auteur de cette application, je corrige juste des bogues et y mets de nouvelles fonctionnalités.

+0

Quel est votre problème avec ces variables statiques? Est-ce qu'ils prennent une énorme quantité de données? Voulez-vous tester si les variables sont effacées? – Janusz

+0

le problème est, qu'ils devraient être réinitialisés, mais ils ne feraient pas ou je fais quelque chose de mal :( – Tima

Répondre

0

Pourquoi ne pas définir la variable statique sur null?

+0

j'ai essayé de le faire, mais ils sont (variables statiques) encore là jusqu'à ce que je ne tue pas le processus d'application dans ddms – Tima

+0

Je suis sûr qu'il y a un moyen d'appeler manuellement le garbage collector dans ce cas.Ne jamais essayé de le faire, mais la solution doit être quelque part là-bas –

0

question Vous n'est pas clair du tout, donc je vais vous donner deux options:

A
Si vous souhaitez mettre fin à votre application par programme, vous pouvez appeler finish() partout à partir de votre code.

B
Si vous voulez simplement tuer votre application "manuellement" sur votre appareil, vous les éléments suivants:

  • Cliquez Menu
  • Cliquez Paramètres
  • Cliquez Applications
  • C lick Gérer les applications
  • Trouvez votre application dans la liste, sélectionnez-le et cliquez sur forcer l'arrêt

Edit:
Je crois qu'il ya aussi une troisième option, mais cela pourrait avoir Pour que cela se fasse avec finish():

Dans votre activité, vous pouvez également remplacer la méthode onDestroy(). Dans votre implémentation de onDestroy(), vous pouvez effectuer tout nettoyage dont vous avez besoin, tel que la réinitialisation de vos variables statiques (par exemple, null).

+0

finish() n'aide pas :( – Tima

+0

Voir la mise à jour la réponse sur l'utilisation 'onDestroy()'. – Nailuj

+0

oui, aussi pensé à ce sujet ... ce n'est pas agréable, mais c'est au moins une solution – Tima

Questions connexes