Classe statique en Java (Android) - utiliser ou non
Récemment, j'ai commencé le développement en Java pour Android.
Mon idée est de créer une classe statique qui va charger des tonnes de trucs sur le début et le stockage des résultats pour une durée de vie de l'application.
J'ai lu beaucoup sur le partage d'objets entre les activités et je pense que le mieux sera de créer une classe statique. Qu'en pensez-vous? Dois-je utiliser une autre approche? Je demande car j'ai lu beaucoup de contrer les opinions sur internet.
Merci.
source d'informationauteur Mihalko
Vous devez vous connecter pour publier un commentaire.
Je suis en supposant que vous faisiez référence à champs statiques d'une classe, par opposition à statique de la classe qui, comme Wyzard souligné, est quelque chose de complètement différent. Comme une règle générale, la détention de l'information dans les champs statiques n'est pas une bonne idée en Java. La raison pour cela est qu'il empêche la possibilité d'instancier plusieurs instances de ce que vous stockez dans la classe.
Dans le cas spécifique d'une application Android, la meilleure façon de traiter la question d'avoir des données stockées associées à l'application elle-même est à la sous-classe le
android.app.Application
classe et de l'utiliser pour gérer l'application de données mondiales:Vous devez alors déclarer que cette classe est l'application principale de la classe (au lieu de la valeur par défaut
Application
). Dans leapplication
entrée dansAndroidManifest.xml
ajouter les éléments suivants:Vous pouvez ensuite rechercher l'instance de l'application à partir de n'importe où à l'intérieur de votre application à l'aide de la méthode
Context.getApplicationContext()
qui sera une instance de votreApplication
sous-classe:En fonction de l'endroit où vous essayez de regarder pour la sous-classe de "Demande", vous pourriez avoir à appeler le "getcontexteapplication()" sans "Contexte":
Le problème avec ta solution, c'est que vous êtes essentiellement en la création d'une énorme pile de variables globales. Il est parfois inévitable, mais il a le même type de problèmes globals toujours avez - vous vite se retrouver avec de dur à lire le code qui n'est pas vraiment une bonne OO ventilation. Vous pouvez l'utiliser, mais à utiliser avec parcimonie, uniquement avec des structures de données importantes qui vont vraiment être partagées entre plusieurs activités.
Android fournit une classe appelée
Application
qui ne sera pas gc ed tant que votre Demande n'est pas tué. Utilisez cette classe pour l'initialisation, les classes statiques comme les conteneurs sont un peu moches, mais je ne peux pas expliquer ce phénomène qui est.Je ne les utiliser que des récipients pour les constantes telles que des masques de bits qui peuvent être exprimées comme EnumSets.
Que les autres postes de mentionner
SharedPreferences
: je pense qu'il existe des préférences pour stocker des valeurs, mais pas pour charger vos structures que vous avez besoin pour votre application. Ces structures devraient être chargés à partir d'une construction de représenter ou d'en faire un modèle pour vos données sémantique.