2010-07-22 21 views
58

Dans mon application, il y a des paramètres spécifiques à l'application, qui devraient être disponibles pour moi, la prochaine fois que mon application démarrera. En d'autres termes, je veux que les données soient disponibles à travers les sessions d'un cycle d'application.Rendre les données persistantes dans Android

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

+2

Veuillez lire à propos de [Data Storage] (http://developer.android.com/guide/topics/data/data-storage.html) dans le guide de dev. – Loxley

Répondre

98

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 soutenir cela, Android fournit un ensemble simple d'API.

Les préférences sont généralement des paires de valeurs de nom. Ils peuvent être stockés en tant que «Préférences partagées» à travers différentes activités dans une application (notez qu'il ne peut pas être partagé actuellement entre les processus). Ou il peut s'agir de quelque chose qui doit être stocké spécifique à 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. Activité gérée Préférences: Ces préférences ne peuvent être utilisés avec l'activité et ne peuvent pas être utilisés 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 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 vous obtenez 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_PRIVATE est le mode de fonctionnement pour les préférences. C'est le mode par défaut et signifie que le fichier créé sera accessible uniquement par l'application appelante. Deux autres sont pris en charge en mode MODE_WORLD_READABLE et MODE_WORLD_WRITEABLE. Dans MODE_WORLD_READABLE l'autre application peut lire le fichier créé mais ne peut pas le modifier. En cas de MODE_WORLD_WRITEABLE d'autres applications ont également des autorisations d'écriture pour le fichier créé.

(2) La façon est d'utiliser le mode par défaut recommandé, sans préciser 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 la les valeurs stockées des préférences:

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

Pour stocker des valeurs dans le fichier de préférences SharedPreference.Editor objet doit être utilisé. Editor est l'interface imbriquée de la classe SharedPreference.

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

Editor soutiennent également des méthodes telles que remove() et clear() pour supprimer la valeur de préférence à partir du fichier.

Préférences d'activité:

Les préférences partagées peuvent être utilisées par d'autres composants de l'application. Mais si vous n'avez pas besoin de partager les préférences avec d'autres composants et que vous voulez avoir des préférences privées d'activités. Vous pouvez le faire avec 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 de fichier de préférence.

Voici le code pour obtenir les préférences:

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

Le code pour stocker des valeurs est aussi même que dans le cas des 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 Data Storage d'Android sur le site des développeurs.

+1

Merci pour votre explication détaillée sur le sujet :) – Girish

+0

Excellente explication. Merci! – benmatth

+1

Existe-t-il un moyen d'être persistant à travers l'installation? –

18

Vous devez utiliser les 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 persistants, et sont également intégrés aux activités de préférence.

+0

Merci pour votre réponse. – Girish

+0

Typo (s): "PreferenceManager.getDefaultSharedPreferences (context);" –

+0

@ThomasDecaux merci, corrigé – SirDarius