Je sais que les préférences partagées ont putString()
, putFloat()
, putLong()
, putInt()
y putBoolean()
. Mais j'ai besoin de stocker un objet de type Serializable
en SharedPreferences
. Comment y parvenir ?
Réponses
Trop de publicités?2020 : Si vous souhaitez sauvegarder des objets, il est préférable d'utiliser Proto DataStore au lieu de SharedPreferences.
Il apporte de grands avantages par rapport aux "anciennes" préférences partagées, à savoir
- API asynchrone pour le stockage et la lecture des données (Flow)
- Sécurité de type dès le départ (Protocol Buffers)
- Appel sûr depuis le thread de l'interface utilisateur (Dispatchers.IO en dessous)
Et bien d'autres avantages tels que l'API transactionnelle, qui garantit la cohérence.
Jetez un coup d'œil à mon article de blog pour voir comment mettre en œuvre facilement le DataStore de Proto
Si votre objet est complexe et comporte des objets imbriqués et que vous devez un jour supprimer un objet imbriqué, il s'agit d'un mauvais mécanisme, car vous devrez mettre en œuvre votre propre stratégie de migration (à moins qu'il ne soit préférable de jeter toutes les données).
S'il s'agit d'une grande quantité de données, ce mécanisme ne prend pas en charge les transactions. Alors, faut-il écrire son propre système ? Ou utiliser un mécanisme de stockage plus approprié ? J'encourage fortement l'utilisation d'un mécanisme de stockage plus approprié tel que le système de fichiers ou la base de données SQLite.
- Réponses précédentes
- Plus de réponses