Android variable globale
Comment puis-je créer une variable globale garder restent des valeurs à travers le cycle de vie de l'application, quelle que soit l'exécution de l'activité..
- Et pourquoi devrions-nous utiliser set et get (Jeff Gilfelt de répondre)?! Pourquoi nous venons de mettre en valeur directement à la variable? comme ceci: public volatile static String x, et de mettre en valeur : GeneralClass.x = valeur;
Vous devez vous connecter pour publier un commentaire.
Vous pouvez étendre la base de
android.app.Application
classe et ajouter un membre des variables comme:Dans votre android manifeste, vous devez déclarer la classe de mise en œuvre de android.app.Application (ajouter le
android:name=".MyApplication"
attribut à l'application existante tag):Ensuite dans vos activités, vous pouvez obtenir et définir la variable comme ceci:
GlobalObjects
et mon manifeste est la suivante : ` <application android:name="GlobalObjects" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:thème="@style/AppTheme" >`src
répertoire, par exemple:src/com/insightemissions/trak/MyApplication.java
.private
variable et des fonctions publiques de mieux que de simplement en utilisant une variable publique?Vous pouvez utiliser un
Singleton Pattern
comme ceci:Dans votre application, vous pouvez accéder à votre singleton de cette façon:
Vous pouvez utiliser les préférences de l'application. Ils sont accessibles à partir de n'importe quelle activité ou morceau de code tant que vous transmettez sur le Contexte de l'objet, et ils sont privés de l'application qui les utilise, de sorte que vous n'avez pas besoin de s'inquiéter sur l'exposition d'application des valeurs spécifiques, à moins que vous traitez avec acheminé appareils. Même ainsi, vous pouvez utiliser le hachage ou de systèmes de cryptage pour enregistrer les valeurs. Aussi, ces préférences sont sauvegardées à partir d'une application à l'autre.
Ici est des exemples de code que vous pouvez regarder.
Cette variable globale qui fonctionne pour mon projet:
Il existe quelques façons que vous pouvez obtenir ce que vous demandez.
1.) Étendre l'application de la classe et l'instanciation de votre contrôleur et le modèle d'objets.
Vous pouvez appeler le votre singleton à partir de votre Application personnalisée objet à tout moment:
2.) Vous pouvez avoir votre manette, il suffit de créer une instance du singleton de lui-même:
Alors vous pouvez simplement appeler la méthode de création d'une Activité ou d'un Fragment, il va créer un nouveau contrôleur si l'un n'existe pas déjà, sinon il sera de retour préexistantes contrôleur.
3.) Enfin, il y a une nappe cadre créé à la Place qui vous propose l'injection de dépendance au sein d'Android. Il est appelé Poignard. Je ne rentrerai pas dans la façon de l'utiliser ici, mais il est très habile si vous avez besoin de ce genre de chose.
J'espère que j'ai donné assez de détails en ce qui concerne la façon dont vous pouvez faire ce que vous espérez pour.
Essayer Comme Ceci:
Créer de données partagée catégorie:
SharedData.java
Déclarés/Initiaze d'une instance de classe à l'échelle mondiale dans les classes où vous souhaitez set/get de données (à l'aide de ce code avant
onCreate()
méthode):-Jeu de données:
Obtenir des données:
Vous pouvez créer un
Global Class
comme ceci:Puis le définir dans le manifeste:
Maintenant, vous pouvez définir des valeurs de variable globale comme ceci:
Vous pouvez obtenir ces valeurs comme ceci:
Veuillez trouver exemple complet de ce blog
Les Variables Globales
J'ai vérifié pour les mêmes réponses, mais ceux donnés ici ne correspondent pas à mes besoins.
J'ai trouver quelque chose qui, de mon point de vue, est ce que vous cherchez. Le seul point noir est une question de sécurité (ou peut-être pas) car je ne sais pas au sujet de la sécurité.
Je suggère l'utilisation de l'Interface (pas besoin d'utiliser la Classe avec le constructeur et donc...), puisque vous n'avez qu'à créer quelque chose comme :
Puis vous pouvez y accéder de partout au sein de vos classes en utilisant les éléments suivants:
Techniquement cela ne répond pas à la question, mais je vous conseille d'utiliser la Salle de la base de données au lieu d'une variable globale.
https://developer.android.com/topic/libraries/architecture/room.html
Même si vous êtes "seulement" avoir besoin de stocker une variable globale et c'est pas une grosse affaire, et ce n'est pas, mais à l'aide de la Chambre de la base de données est le plus élégant, natif et bien prise en charge de garder des valeurs à travers le cycle de vie de l'activité.
Il vous aidera à éviter de nombreux problèmes, en particulier l'intégrité des données.
Je comprends que la base de données et une variable globale sont différents mais s'il vous plaît utiliser la Salle pour des raisons de maintenance du code, l'application de la stabilité et de l'intégrité des données.
Utilisation SharedPreferences de stocker et de récupérer des variables globales.
Si possible, vous devez déclarer les variables que vous devez garder en vie qui n'ont pas été clairement par le Garbage Collector ou Décharger à l'aide d'OS dans le fichier .donc
Pour ce faire, vous devez coder en C/C++ et de les compiler .donc, lib fichier et de le charger dans votre MainActivity.
static
variables.Facile!!!!
Ceux variable que vous voulez l'accès en tant que variable globale, vous pouvez les déclarer comme des variables statiques. Et maintenant, vous pouvez accéder à ces variables en utilisant
classname.variablename;
}
MyProperites.someValueIWantToKeep;
C'Est Tout! 😉
synchronized
sur la statiquegetInstance()
tandis que d'autres ne le font pas. upvoted en conséquence.