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é :
- Fondamentaux des Préférences : Introduction aux bases des préférences utilisateur dans les applications Android.
- Techniques de Mise en Place : Explications sur comment intégrer les préférences dans les applications Android.
- Démonstrations Code : Présentation de cas pratiques avec des exemples de code.
- Pratiques Optimales : Recommandations pour une gestion efficace des préférences.