2010-09-08 6 views
3

Pourquoi l'utilisation de variables finales statiques est-elle encouragée à déclarer des constantes plutôt que des variables finales? L'utilisation de sons statiques est logique lorsqu'il y aura de nombreuses instances d'une classe mais cet argument est correct lorsqu'il est utilisé pour une activité Android. En fait, étant donné que l'instance de classe sera disponible même après la fin de l'activité et est finalement récupérée, il semble que toutes ces constantes resteront en mémoire jusqu'à ce que le chargeur de classe soit présent.Utilisation des finales statiques dans Android Activité

De même, le compilateur inline-t-il les variables finales non statiques (ints et String) comme il le fait pour les variables finales statiques?

Répondre

4

Ils sont statiques pour que vous puissiez les lire dans d'autres classes. Les constantes statiques sont principalement utilisées pour envoyer des émissions et des choses comme ça. Et il peut très bien y avoir beaucoup d'instances d'une activité.

+0

Convenu. Cependant, si je veux juste déclarer des constantes dans une activité qui ne vont pas être utilisées en dehors de celle-ci et si j'ai environ 20 -25 chaînes de caractères, devrais-je les déclarer statiques? Toutes ces constantes resteront jusqu'à ce que le chargeur de classe soit récupéré. D'un autre côté, si je les déclare simplement définitifs et non statiques, ils disparaîtront lorsque l'activité sera GCed. Il peut y avoir plusieurs instances de l'activité, mais uniquement si l'utilisateur visite l'activité plusieurs fois de suite. Mais n'est-ce pas rare? – adityad

+0

Pas nécessairement. Cela n'a rien à voir avec la rapidité avec laquelle l'utilisateur visite l'activité. Avoir plusieurs instances de la même activité est parfaitement valide dans Android et est le comportement par défaut. En ce qui concerne votre question, si les chaînes n'ont aucune utilité en dehors de l'instance, ne les déclarez pas statiques. Si elles doivent être identiques dans toutes les instances, il vaut probablement mieux les déclarer statiques. Dans les appareils mobiles, les opérations de l'UC sont plus importantes que l'utilisation de la mémoire (imo), et vous économiserez des cycles CPU en utilisant des variables statiques plutôt que de les avoir créées toutes les instances. Bien que ce soit négligeable – Falmarri

4

Un autre point est que vous n'avez même pas besoin de créer un objet de la classe pour accéder à la constante. Par exemple, si vous voulez obtenir PI vous n'avez pas besoin de créer une instance de la classe Math Tout d'abord, il suffit d'utiliser la classe elle-même

Log.d("LogTag", String.valueOf(Math.PI)); 
Questions connexes