Wat zijn Shared Preferences en hoe worden ze gebruikt in appontwikkeling?

Shared Preferences is een essentiële functie in de ontwikkeling van mobiele apps waarmee ontwikkelaars kleine hoeveelheden gegevens als key-valueparen kunnen opslaan en ophalen. Het mechanisme is vooral nuttig om gebruikersinstellingen, appstatussen of andere configuratiegegevens op te slaan die tussen appsessies bewaard moeten blijven. Shared Preferences maakt deel uit van het Android-platform en biedt een eenvoudige en efficiënte manier om persistente gegevens te verwerken zonder complexe databaseopzet.

Wanneer een app Shared Preferences gebruikt, worden de gegevens opgeslagen in een XML-bestand in de interne opslag van de app. Hierdoor kan de app de gegevens snel raadplegen en bijwerken, wat de gebruikerservaring verbetert doordat de voorkeuren en instellingen van de gebruiker beschikbaar en actueel blijven. Shared Preferences is ontworpen om licht en privé voor de app te zijn, maar het is niet versleuteld, wat het tot een ideale keuze maakt voor niet-gevoelige gegevens in apps die zijn geoptimaliseerd voor zowel prestaties als gebruiksgemak.

Shared Preferences is een eenvoudige en efficiënte manier om kleine hoeveelheden gegevens als key-valueparen in de lokale opslag van het apparaat op te slaan, waardoor mobiele applicaties gebruikersinstellingen en applicatiestatussen tussen sessies kunnen bewaren. Deze functionaliteit is ideaal om gebruikersvoorkeuren op te slaan, zoals thema-instellingen of of een gebruiker is ingelogd, omdat het een lichte oplossing biedt zonder dat er een database nodig is. De gegevens blijven beschikbaar voor de applicatie, zelfs nadat die is gesloten of opnieuw gestart, wat zorgt voor een consistente en persoonlijke gebruikerservaring. Shared Preferences is vooral nuttig wanneer snelle toegang tot persistente gegevens nodig is en de beveiligingseisen gematigd zijn, omdat de gegevens standaard niet zijn versleuteld; wachtwoorden en andere geheimen mogen er niet onversleuteld in worden opgeslagen.

Meer over Shared Preferences

Shared Preferences is een essentiële technologie in de ontwikkeling van mobiele apps die eenvoudige en efficiënte opslag van kleine hoeveelheden gegevens als key-valueparen mogelijk maakt. De methode is ideaal om gebruikersinstellingen, applicatievoorkeuren en andere persistente gegevens op te slaan die tussen appsessies bewaard moeten blijven. Shared Preferences is bijzonder geschikt voor gevallen waarin snelle toegang tot gegevens en gebruiksgemak cruciaal zijn, zoals gebruikersinstellingen, inlogstatus en appconfiguratie.

Technisch gezien slaat Shared Preferences gegevens op in een XML-bestand in de interne opslag van de app. Wanneer een app gegevens wil opslaan of ophalen, werkt die met dit bestand via een API die lees- en schrijfbewerkingen afhandelt. Dit maakt Shared Preferences zowel efficiënt als eenvoudig te implementeren, wat een groot voordeel is voor ontwikkelaars die licht gegevensbeheer willen zonder complexe databasebewerkingen te hoeven afhandelen.

Shared Preferences kan in verschillende scenario’s worden gebruikt, die elk een ander type gegevensverwerking ondersteunen:

  1. Gebruikersinstellingen opslaan: Shared Preferences wordt gebruikt om door de gebruiker gedefinieerde instellingen op te slaan, zoals thema, meldingsvoorkeuren of taalkeuze. Dit zorgt ervoor dat de voorkeuren van de gebruiker bewaard blijven, zelfs wanneer de app wordt gesloten en opnieuw geopend.

  2. Sessiebeheer: Shared Preferences kan worden gebruikt om sessiegerelateerde gegevens op te slaan, zoals inlogstatus of een gebruikers-ID, waardoor de app de gebruiker tussen sessies kan onthouden zonder herhaaldelijk inloggen. Toegangstokens en andere geheimen moeten worden versleuteld voordat ze worden opgeslagen.

  3. Configuratiegegevens: Applicaties kunnen configuratiegegevens opslaan die nodig zijn voor de functionaliteit van de app, zoals functie-instellingen of standaardwaarden, waardoor het eenvoudig is het gedrag van de app aan te passen zonder de code te wijzigen. Geheime API-sleutels horen niet in Shared Preferences thuis, omdat alles wat op het apparaat is opgeslagen, kan worden uitgelezen.

Een van de grootste sterke punten van Shared Preferences is de eenvoud en efficiëntie. Dankzij de eenvoudige toegang tot gegevens via key-valueparen kunnen ontwikkelaars snel persistente gegevensopslag implementeren zonder zich zorgen te hoeven maken over complexe databasebewerkingen. De gegevens zijn bovendien alleen toegankelijk voor de specifieke app, wat een zekere mate van veiligheid en privacy biedt.

Het lage resourceverbruik van Shared Preferences is een ander belangrijk voordeel. De technologie vereist minimale opslagruimte en rekenkracht, wat het ideaal maakt voor mobiele apparaten waarop optimalisatie van resources cruciaal is. Omdat de gegevens in de interne opslag van de app worden bewaard, zijn ze normaal gesproken ook beschermd tegen toegang door andere apps.

In de praktijk is Shared Preferences lange tijd de standaardmanier geweest om eenvoudige gebruikersgegevens in Android-apps op te slaan. Het wordt gebruikt om de gebruikerservaring consistent en persoonlijk te houden door de voorkeuren en status van de gebruiker te onthouden. Het wordt ook gebruikt om de prestaties van de app te optimaliseren door de behoefte aan herhaalde gegevensverzoeken en netwerkaanroepen te verminderen.

Samengevat is Shared Preferences een technologie die eenvoud en efficiëntie combineert in een oplossing die gegevensopslag intuïtiever en toegankelijker maakt voor ontwikkelaars. Het vermogen om zonder complexe opzet en met minimaal resourceverbruik te werken, maakt het tot een belangrijk hulpmiddel in moderne appontwikkeling, waarin snelle en betrouwbare gegevensverwerking essentieel is.

Veelgestelde vragen over Shared Preferences

Wat zijn Shared Preferences en hoe werken ze in Android-ontwikkeling?

Shared Preferences is in Android-ontwikkeling een mechanisme om eenvoudige gegevens op te slaan als key-valueparen die vanuit verschillende componenten van een applicatie toegankelijk zijn. De methode is ideaal om kleine hoeveelheden gegevens op te slaan, zoals gebruikersinstellingen of applicatieconfiguratie, waarvoor geen database nodig is.

Wanneer een applicatie Shared Preferences gebruikt, wordt er een bestand aangemaakt met de opgeslagen gegevens, en dit bestand is alleen toegankelijk voor de applicatie die het heeft aangemaakt. De gegevens worden opgeslagen in een XML-bestand in de interne opslag van de applicatie, wat ze op een normaal apparaat zonder root beschermt tegen toegang door andere apps. Ontwikkelaars kunnen eenvoudig uit dit bestand lezen en ernaar schrijven met methoden zoals getSharedPreferences(), edit(), putString() en commit() of apply() om de wijzigingen op te slaan.

Vergeleken met complexere opslagoplossingen zoals SQLite-databases is Shared Preferences veel eenvoudiger en sneller te implementeren, vooral wanneer alleen eenvoudige gegevens moeten worden opgeslagen die geen gestructureerde opslag of complexe query’s vereisen. Dit maakt Shared Preferences tot een efficiënte keuze voor veel applicaties die snel en eenvoudig kleine hoeveelheden gegevens moeten opslaan en ophalen.

Hoe worden gegevens opgeslagen en opgehaald met Shared Preferences?

Gegevens worden in Shared Preferences opgeslagen als key-valueparen. Eerst wordt een SharedPreferences-object verkregen, doorgaans met getSharedPreferences en een bestandsnaam. Om gegevens op te slaan, wordt een editor geopend met edit(), worden waarden toegevoegd met methoden zoals putString of putBoolean en worden de wijzigingen opgeslagen met apply(), dat asynchroon schrijft, of commit(), dat direct schrijft.

Gegevens worden opgehaald met methoden zoals getString of getInt, waarbij de sleutel wordt opgegeven en een standaardwaarde die wordt gebruikt als de sleutel niet bestaat. Voor nieuwere Android-projecten raadt Google vaak DataStore aan als modernere vervanging, maar het principe van sleutels en waarden is hetzelfde.

Welke datatypen kunnen in Shared Preferences worden opgeslagen?

Shared Preferences ondersteunt eenvoudige datatypen: tekststrings (String), gehele getallen (int), lange gehele getallen (long), decimale getallen (float) en waar/onwaar-waarden (boolean). Ook een set tekststrings (Set of String) kan worden opgeslagen.

Complexere objecten kunnen niet rechtstreeks worden opgeslagen. Ze kunnen naar tekst worden omgezet, bijvoorbeeld als JSON, maar dit wordt alleen aanbevolen voor kleine hoeveelheden gegevens. Shared Preferences is bedoeld voor lichte informatie zoals gebruikersinstellingen, een gekozen thema of of een introductie al is getoond. Grotere of gestructureerde gegevens horen thuis in een database zoals Room of in bestanden.

Wat is het verschil tussen Shared Preferences en andere opslagmethoden zoals SQLite?

Shared Preferences slaat kleine hoeveelheden gegevens op als key-valueparen in een bestand op het apparaat. Het is eenvoudig te gebruiken, maar niet geschikt voor grote of complexe hoeveelheden gegevens, en echte query’s zijn niet mogelijk.

SQLite, vaak via Room, is een relationele database die grote hoeveelheden gestructureerde gegevens, relaties tussen tabellen en geavanceerde zoekopdrachten aankan. Bestanden zijn zeer geschikt voor afbeeldingen, documenten en andere grotere gegevens. DataStore is het nieuwere alternatief van Google voor Shared Preferences, met asynchrone toegang. De keuze hangt af van de hoeveelheid gegevens: instellingen in Shared Preferences of DataStore, gestructureerde gegevens in een database.

Hoe worden gegevens die in Shared Preferences zijn opgeslagen beveiligd?

Gegevens in Shared Preferences worden als platte tekst opgeslagen in de privémap van de app. Andere apps hebben normaal gesproken geen toegang, maar op een geroot apparaat of via bepaalde back-ups kan het bestand worden gelezen. Wachtwoorden, tokens en andere gevoelige informatie mogen daarom niet onversleuteld worden opgeslagen.

Gevoelige gegevens kunnen worden versleuteld voordat ze worden opgeslagen, met sleutels die in de Android Keystore worden bewaard, die is ontworpen om cryptografische sleutels te beschermen. De Jetpack-bibliotheek androidx.security:security-crypto bood hiervoor eerder EncryptedSharedPreferences, maar Google heeft de hele bibliotheek, inclusief EncryptedSharedPreferences, EncryptedFile en MasterKey, vanaf versie 1.1.0-alpha07 in april 2025 als deprecated gemarkeerd. De aanbeveling van Google is in plaats daarvan de gewone API’s van het platform te gebruiken, zoals SharedPreferences, samen met direct gebruik van de Android Keystore, waarbij een sleutel wordt gegenereerd met KeyGenerator en wordt gebruikt om de waarden te versleutelen voordat ze worden opgeslagen. Over het algemeen moet zo weinig mogelijk gevoelige informatie op het apparaat worden opgeslagen.

Met welke beperkingen moet rekening worden gehouden bij het gebruik van Shared Preferences?

Shared Preferences is bedoeld voor kleine hoeveelheden eenvoudige gegevens. Grote hoeveelheden gegevens kunnen de app vertragen, omdat het hele bestand in het geheugen wordt geladen, en schrijven met commit() op de main thread kan de gebruikersinterface laten haperen.

Er is geen ingebouwde ondersteuning voor complexe objecten, relaties of query’s, en gegevens worden niet automatisch versleuteld. Er is ook geen typeveiligheid, zodat een verkeerde sleutel of een verkeerd datatype pas wordt ontdekt wanneer de app draait. Wijzigingen die vanuit meerdere processen tegelijk worden aangebracht, worden niet betrouwbaar afgehandeld. Voor geavanceerdere behoeften worden DataStore, Room of versleutelde opslag aanbevolen.

Shared Preferences voor dummies

Shared Preferences is een slimme functie in mobiele apps waarmee de app kleine stukjes informatie kan onthouden die het heeft gekregen. Zie het als een klein notitieboekje waarin de app dingen kan noteren die het later moet onthouden. Een app die bijvoorbeeld een gebruikersnaam onthoudt, zodat die niet elke keer hoeft te worden ingetypt wanneer de app wordt geopend, gebruikt Shared Preferences om die informatie op te slaan. Het is een eenvoudige en snelle manier voor apps om gegevens op te slaan die weinig ruimte innemen en de volgende keer dat de app wordt gebruikt beschikbaar moeten zijn.

Plaats een reactie