web-dev-qa-db-fra.com

Rendre les données persistantes dans android

Dans mon application, certains paramètres spécifiques à l'application devraient être disponibles pour moi la prochaine fois que mon application démarre.

En d'autres termes, je veux que les données soient disponibles à travers les sessions d'un cycle d'application.

Cela peut-il être réalisé sans utiliser de base de données (sqlite).

58
Girish

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

Les préférences sont généralement des paires nom/valeur. 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.) des applications.

  2. Préférences gérées par l'activité: 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 méthode getSharedPreferences de la classe Context. Les préférences sont stockées dans un fichier, qui peut être personnalisé (1) ou le fichier par défaut (2).

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

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

MODE_PRIVATE Est 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_READABLE Et MODE_WORLD_WRITEABLE. Dans MODE_WORLD_READABLE Une autre application peut lire le fichier créé mais ne peut pas le modifier. Dans le cas de MODE_WORLD_WRITEABLE, D'autres 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 vous pouvez récupérer les valeurs stockées à partir des préférences:

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

Pour stocker les valeurs dans le fichier de préférences, il faut utiliser l'objet SharedPreference.Editor. Editor est l'interface imbriquée de la classe SharedPreference.

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 méthode getPreferences() de l'activité. La méthode getPreference utilise la méthode getSharedPreferences() 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 comme 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 la publication d'Android Stockage de données sur le site des développeurs.

101
Pentium10

Vous devez utiliser des préférences partagées:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.edit().putString("my_pref", "my_value").commit();

Et pour le récupérer:

String value = prefs.getString("my_pref", "default Value");

Ces préférences sont persistantes et sont également intégrées aux activités de préférence.

19
SirDarius