Comment puis-je créer des variables globales pour conserver des valeurs autour du cycle de vie de l'application, quelle que soit l'activité en cours d'exécution.
android
global-variables
d-man
la source
la source
Réponses:
Vous pouvez étendre la
android.app.Application
classe de base et ajouter des variables membres comme ceci:Dans votre manifeste Android, vous devez déclarer la classe implémentant android.app.Application (ajoutez l'
android:name=".MyApplication"
attribut à la balise d'application existante):Ensuite, dans vos activités, vous pouvez obtenir et définir la variable comme suit:
la source
Vous pouvez utiliser un
Singleton Pattern
comme ceci:Dans votre application, vous pouvez accéder à votre singleton de cette manière:
la source
Cette variable globale fonctionne pour mon projet:
la source
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 l'objet Context, et ils sont privés de l'application qui les utilise, vous n'avez donc pas à vous soucier d'exposer des valeurs spécifiques à l'application, sauf si vous traitez avec routé dispositifs. Même ainsi, vous pouvez utiliser des schémas de hachage ou de chiffrement pour enregistrer les valeurs. De plus, ces préférences sont stockées d'une application exécutée à la suivante. Voici quelques exemples de code que vous pouvez consulter.
la source
Il existe plusieurs façons de réaliser ce que vous demandez.
1.) Étendez la classe d'application et instanciez votre contrôleur et les objets de modèle là-bas.
Ensuite, vous pouvez à tout moment appeler votre singleton à partir de votre objet Application personnalisé:
2.) Vous pouvez demander à votre contrôleur de créer une instance singleton de lui-même:
Ensuite, vous pouvez simplement appeler la méthode create à partir de n'importe quelle activité ou fragment et cela créera un nouveau contrôleur s'il n'en existe pas déjà, sinon il retournera le contrôleur préexistant.
3.) Enfin, il y a un cadre lisse créé à Square qui vous offre une injection de dépendance dans Android. Cela s'appelle Dague . Je n'entrerai pas dans la façon de l'utiliser ici, mais c'est très simple si vous avez besoin de ce genre de chose.
J'espère avoir donné suffisamment de détails sur la façon dont vous pouvez faire ce que vous espérez.
la source
Essayez comme ceci:
Créez une classe de données partagée:
SharedData.java
Déclaré / initialiser une instance de classe globalement dans les classes où vous souhaitez définir / obtenir des données (en utilisant ce code avant la
onCreate()
méthode): -Définir les données:
Obtenez des données:
la source
Vous pouvez créer un
Global Class
comme ceci:Définissez-le ensuite dans le manifeste:
Vous pouvez maintenant définir des valeurs pour une variable globale comme ceci:
Vous pouvez obtenir ces valeurs comme ceci:
Veuillez trouver un exemple complet de ce blog Variables globales
la source
la source
J'ai vérifié pour une réponse similaire, mais celles données ici ne correspondent pas à mes besoins. Je trouve quelque chose qui, de mon point de vue, correspond à ce que vous recherchez. Le seul point noir possible est une question de sécurité (ou peut-être pas) car je ne connais pas la sécurité.
Je suggère d'utiliser Interface (pas besoin d'utiliser Class avec constructeur et ainsi de suite ...), car il suffit de créer quelque chose comme:
Ensuite, vous pouvez accéder partout dans vos classes en utilisant ce qui suit:
la source
Techniquement, cela ne répond pas à la question, mais je recommanderais d'utiliser la base de données Room au lieu d'une variable globale. https://developer.android.com/topic/libraries/architecture/room.html Même si vous n'avez besoin que de stocker une variable globale et ce n'est pas grave et quoi, mais l'utilisation de la base de données Room est la plus élégante , façon native et bien supportée de conserver les valeurs tout au long du cycle de vie de l'activité. Cela permettra d'éviter de nombreux problèmes, en particulier l'intégrité des données. Je comprends que la base de données et la variable globale sont différentes, mais veuillez utiliser Room pour la maintenance du code, la stabilité de l'application et l'intégrité des données.
la source
Utilisez SharedPreferences pour stocker et récupérer des variables globales.
la source
Si possible, vous devez déclarer les variables dont vous avez besoin pour maintenir en vie qui n'ont pas été effacées par Garbage Collector ou Décharger par OS dans le fichier .so Pour ce faire, vous devez coder en C / C ++ et compiler dans le fichier lib .so et chargez-le dans votre MainActivity.
la source
static
variables Java .la source
Facile!!!!
Les variables auxquelles vous souhaitez accéder en tant que variable globale, vous pouvez les déclarer en tant que variables statiques. Et maintenant, vous pouvez accéder à ces variables en utilisant
classname.variablename;
}
MyProperites.someValueIWantToKeep;
C'est tout! ;)
la source
synchronized
sur le statiquegetInstance()
alors que d'autres ne le font pas. voté en conséquence.