Gérer les préférences sous Android

Fabien Brissonneau
Fabien Brissonneau Ajouter un commentaire 3e lecture en min

Avec Android, nous avons 3 façons d’accéder aux préférences qui semblent équivalentes : Activity.getPreferences, ContextWrapper.getSharedPreferences, PreferenceManager.getDefaultSharedPreferences. Rappelons que cette notion de préférence correspond aux fichiers qui contiennent des paires clés-valeurs, couramment utilisés pour stocker la configuration utilisateur d’une application. On obtient une référence vers un objet SharedPreferences, sur lequel on appelle edit() pour obtenir une Editor, puis commit() ou apply() ou bien getXXX(K) pour obtenir la valeur qui correspond à la clé. Le nom du fichier est plus ou moins paramétrable par le développeur, c’est justement toute la différence entre ces différentes méthodes.

Activity.getPreferences

Cette méthode est un appel à getSharedPreferences(Activity.class.name, mode), soit un fichier de préférence qui porte le nom de l’activité. Les modes sont donc les mêmes que pour la méthode suivante.

SharedPreferences prefs = getPreferences(MODE_PRIVATE);

boolean encours = prefs.getBoolean(« estencours », true);

Cette méthode getSharedPreferences(nom_du_fichier, mode) retourne une référence vers une SharedPreference qui correspond au nom de fichier nom_du_fichier, ouvert dans le mode mode.

Les modes utilisables sont MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITABLE. Le fichier de préférences sera accessible à l’extérieur de l’application selon le mode utilisé.

SharedPreferences prefs = getSharedPreferences(« nom_du_fichier »,MODE_PRIVATE);

boolean encours = prefs.getBoolean(« estencours », true);

PreferenceManager.getDefaultSharedPreferences

Cette méthode retourne une référence SharedPreference qui sera la même pour toutes les activités de l’application. Le nom du fichier de préférence sera /data/data/<nom_du_package>/shared_prefs/<nom_du_package>_preferences.xml.

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

boolean encours = prefs.getBoolean(« estencours », true);

Conclusion

Il semble plus simple et efficace d’utiliser PrefrenceManager.getDefaultSharedPreferences(…), cela assure d’utiliser le même fichier de préférences dans toute l’application. Imaginons que vous positionniez les valeurs de préférence dans une première activité (dédiée à cela, en général), et que vous les utilisiez dans une autre, il faut absolument que la lecture se fasse dans le fichier où les paramètres sont stockés. Ou alors, pour être sûr d’utiliser le même fichier de préférences dans toutes les activités de l’application, il faut utiliser le même nom

En Résumé :

  1. Fondamentaux des Préférences : Introduction aux bases des préférences utilisateur dans les applications Android.
  2. Techniques de Mise en Place : Explications sur comment intégrer les préférences dans les applications Android.
  3. Démonstrations Code : Présentation de cas pratiques avec des exemples de code.
  4. Pratiques Optimales : Recommandations pour une gestion efficace des préférences.
Partager cet article
Par Fabien Brissonneau Expert en Conception et Développement sur Java et DotNet avec 15 Ans d'Expérience
Fabien, expert en développement, conception et architecture sur les plateformes Java et DotNet, offre ses services depuis plus de 15 ans. Fort de son expérience en C++, il excelle également dans le domaine de la mobilité, ayant créé avec succès des outils pour Android et Windows Phone, certains étant même publiés. En plus de son travail, il consacre une part significative de son temps à la formation, partageant ainsi son expertise avec les acteurs clés de l'industrie. Pour tout ce qui concerne la conception orientée objet sur les plateformes Java et DotNet, Fabien est votre expert de confiance.
Laisser un commentaire