Quelle est la meilleure façon de faire des «paramètres d'application» sous Android? [fermé]

108

Je souhaite stocker certains paramètres d'application (comme l'URL d'une API et certains paramètres de test) pour une application Android.

Je travaille principalement en tant que développeur .NET , donc j'ai l'habitude d'utiliser le fichier app.configà cette fin. Quelle est la bonne façon de le faire sous Android?

Tim Amande
la source

Réponses:

148

De nombreuses applications peuvent fournir un moyen de capturer les préférences de l'utilisateur sur les paramètres d'une application ou d'une activité spécifique. Pour prendre en charge cela, Android fournit un ensemble simple d'API.

Les préférences sont généralement des paires de valeur de nom. Ils peuvent être stockés en tant que «Préférences partagées» dans diverses activités d'une application (notez qu'il ne peut actuellement pas être partagé entre les processus). Ou cela peut être quelque chose qui doit être stocké spécifiquement pour une activité.

  1. Préférences partagées: Les préférences partagées peuvent être utilisées par tous les composants (activités, services, etc.) hors des applications.

  2. Préférences de l'activité gérée: ces préférences ne peuvent être utilisées qu'avec dans l'activité et ne peuvent pas être utilisées par d'autres composants de l'application.

Préférences partagées:

Les préférences partagées sont gérées à l'aide de la getSharedPreferencesméthode de la Contextclasse. Les préférences sont stockées dans un fichier par défaut (1) ou vous pouvez spécifier un nom de fichier (2) à utiliser pour faire référence aux préférences.

(1) Voici comment obtenir l'instance lorsque vous spécifiez le nom du fichier

public static final String PREF_FILE_NAME = "PrefFile";
   SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

MODE_PRIVATEest le mode de fonctionnement des préférences. Il s'agit du mode par défaut et signifie que le fichier créé sera accessible uniquement par l'application appelante. Les deux autres modes pris en charge sont MODE_WORLD_READABLEet MODE_WORLD_WRITEABLE. Dans une MODE_WORLD_READABLEautre application peut lire le fichier créé mais ne peut pas le modifier. Dans le cas d' MODE_WORLD_WRITEABLEautres applications ont également des autorisations d'écriture pour le fichier créé.

(2) La méthode recommandée consiste à utiliser le mode par défaut, sans spécifier le nom du fichier

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);

Enfin, une fois que vous avez l'instance de préférences, voici comment récupérer les valeurs stockées dans les préférences:

 int storedPreference = preferences.getInt("storedInt", 0);

Pour stocker des valeurs dans le fichier de préférences, l' SharedPreference.Editorobjet doit être utilisé. Editorest l'interface imbriquée de la SharedPreferenceclasse.

SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

L'éditeur prend également en charge des méthodes telles que remove()et clear()pour supprimer la valeur de préférence du fichier.

Préférences d'activité:

Les préférences partagées peuvent être utilisées par d'autres composants d'application. Mais si vous n'avez pas besoin de partager les préférences avec d'autres composants et que vous souhaitez avoir des activités de préférences privées. Vous pouvez le faire à l'aide de la getPreferences()méthode de l'activité. La getPreferenceméthode utilise la getSharedPreferences()méthode avec le nom de la classe d'activité pour le nom du fichier de préférences.

Voici le code pour obtenir les préférences

SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);

Le code pour stocker les valeurs est également le même qu'en cas de préférences partagées.

SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

Vous pouvez également utiliser d'autres méthodes telles que le stockage de l'état d'activité dans la base de données. Remarque Android contient également un package appelé android.preference. Le package définit des classes pour implémenter l'interface utilisateur des préférences d'application.

Pour voir d'autres exemples, consultez l' article sur le stockage de données d'Android sur le site des développeurs.

Pentium10
la source
1
Merci. Il semble que ce que je dois faire est d'utiliser un fichier XML pour ce que je recherche (ou peut-être que j'utilise le XML comme données à charger initialement), mais les préférences sont utiles pour une autre partie de mon projet.
Tim Almond
1
Vous pouvez utiliser le fichier xml pour init. Vous devez appeler quelque chose commePreferenceManager.setDefaultValues(this, R.xml.profiles_preferences, false);
Pentium10
3
Ce guide pourrait également être utile: developer.android.com/guide/topics/ui/settings.html
Hung Tran
1
+1. Juste un petit peu à garder à l'esprit. Après avoir défini la valeur dans preferencesobject, l'appel editor.apply()est recommandé editor.commit()car le premier gérera l'enregistrement en arrière-plan.
Anindya Chatterjee
2
Je suis un peu confus ici. Les sharedPreferences permettent de stocker les paramètres utilisateur sur l'application, pas les paramètres des applications. L'utilisateur (et moi aussi) se demandait où stocker les paramètres de l'application, l'ex URL de l'API ou d'autres paramètres que l'application utilise pour fonctionner correctement.
albanx le