web-dev-qa-db-fra.com

Comment créer une variable globale dans Android?

Dans mon Android j'ai besoin d'un endroit pour mettre l'ID de membre variable. Le problème est qu'il provient de l'API en ligne et j'ai besoin de trouver un moyen de le stocker/le récupérer

J'ai essayé de le mettre dans une classe personnalisée, mais le problème est qu'il perdra si je tue l'activité, je sais également qu'il existe un moyen d'étendre l'application.

Je voudrais donc savoir quelle est la meilleure façon de stocker une variable globale?

Je dois implémenter:

  1. Enregistrez la variable sur onSaveState
  2. Enregistrez-le sur sharepref
  3. Enregistrez-le manuellement
  4. Récupérez-le manuellement

Merci

Mise à jour: Merci pour la réponse. Si je n'ai que 3 variables (données simples, par exemple un booléen, une phrase) et que j'en ai besoin après le redémarrage de l'application, dois-je simplement utiliser share pref pour les stocker? Quel en est l'inconvénient? par exemple. Sera-t-il nocif pour les performances? Merci

12
user782104

Vous pouvez créer la variable globale dans Android en les déclarant dans la classe qui étend la classe Application.

Quelque chose comme ça.

class MyAppApplication extends Application {

    private String mGlobalVarValue;

    public String getGlobalVarValue() {
        return mGlobalVarValue;
    }

    public void setGlobalVarValue(String str) {
        mGlobalVarValue = str;
    }
}

MainActivity.Java

class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle b){
        ...
        MyAppApplication mApp = ((MyAppApplication)getApplicationContext());
        String globalVarValue = mApp.getGlobalVarValue();
        ...
    }
}

Mise à jour

Cela conserve la valeur jusqu'à ce que votre application ne soit pas détruite. Si vous souhaitez conserver vos valeurs enregistrées même après la destruction de votre instance d'application, vous pouvez utiliser la meilleure méthode SharedPreferences pour ce faire.

En savoir plus sur le SharedPrefernces à partir d'ici: http://developer.Android.com/reference/Android/content/SharedPreferences.html

26
Ajay S
  • Si vous avez besoin d'une variable globale , qui est partagée entre plusieurs activités et survit à leurs changements de cycle de vie, mais qui n'est autrement pas persistante et ne survivrait pas au redémarrage d'une application, la méthode suggérée dans la première réponse (étendre Application et la mettre là) est correcte.
  • Si vous avez besoin d'un paramètre global persistant , qui devrait également survivre au redémarrage d'une application, vous devez utiliser l'une des autres méthodes suggérées. SharedPreferences est probablement le plus facile à utiliser.

Voir aussi cette question Stack Overflow: Quelle est la meilleure façon de partager des données entre les activités?

6
stoyanr

Vous pouvez le stocker dans un SharedPreferences , et créer une classe sharedpreferenceHelper pour le récupérer/le stocker.

2
StarsSky

Il est toujours préférable de stocker des valeurs que vous souhaitez utiliser plusieurs fois de l'une des manières suivantes: -

  • Préférences partagées
  • Cours singleton
  • Écrivez-le dans un fichier
  • Base de données SQLite
  • Stocker sur le serveur Web
1
Atish Agrawal