SharedPreferences
Bewaar eenvoudige sleutel-waardegegevens tussen app-sessies met SharedPreferences. Leer voorkeuren op te slaan, te lezen en te verwijderen.
SharedPreferences is een gratis Android Academy-les op CoddyKit. Dit is les 4 van 6. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Android Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Android Academy bevat in totaal 6 lessen.
Opties voor permanente opslag
Android biedt verschillende manieren om gegevens lokaal op te slaan:
- SharedPreferences — eenvoudige sleutel-waardeparen (instellingen, tokens)
- Room — gestructureerde SQLite-database (complexe gegevens)
- DataStore — moderne asynchrone vervanging voor SharedPreferences
- Bestanden — onbewerkte bestands-I/O
SharedPreferences is ideaal voor eenvoudige instellingen en gebruikersvoorkeuren.
Wat is SharedPreferences?
SharedPreferences slaat gegevens op als sleutel-waardeparen in een XML-bestand op het apparaat. Het ondersteunt:
- String
- Int / Long / Float
- Boolean
- Set<String>
Gegevens blijven behouden nadat de app opnieuw is gestart en overleven configuratiewijzigingen (rotatie).
Een SharedPreferences-instantie verkrijgen
Er zijn twee manieren om een SharedPreferences-object te verkrijgen:
// 1. Named preferences (shared across activities)
val prefs = getSharedPreferences(
"MyAppPrefs", // file name
Context.MODE_PRIVATE // only your app can read it
)
// 2. Activity's default preferences
val prefs = getPreferences(Context.MODE_PRIVATE)Gegevens schrijven
Gebruik een Editor om waarden te schrijven en roep daarna apply() aan:
val prefs = getSharedPreferences("MyAppPrefs", Context.MODE_PRIVATE)
prefs.edit()
.putString("username", "alice")
.putInt("login_count", 5)
.putBoolean("dark_mode", true)
.apply() // async, non-blocking — preferred over commit()
// Kotlin extension (cleaner syntax):
with(prefs.edit()) {
putString("username", "alice")
apply()
}Gegevens lezen
Lees waarden op basis van hun sleutel en geef een standaardwaarde op als de sleutel niet bestaat:
val prefs = getSharedPreferences("MyAppPrefs", Context.MODE_PRIVATE)
val username = prefs.getString("username", "Guest") // default: "Guest"
val count = prefs.getInt("login_count", 0) // default: 0
val darkMode = prefs.getBoolean("dark_mode", false) // default: false
println("Hello, $username! Logins: $count. Dark: $darkMode")Praktijkvoorbeeld: themaschakelaar
Een instelling voor de donkere modus opslaan en herstellen:
class SettingsActivity : AppCompatActivity() {
private lateinit var binding: ActivitySettingsBinding
private lateinit var prefs: SharedPreferences
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySettingsBinding.inflate(layoutInflater)
setContentView(binding.root)
prefs = getSharedPreferences("settings", MODE_PRIVATE)
// Restore saved state
binding.switchDarkMode.isChecked = prefs.getBoolean("dark_mode", false)
binding.switchDarkMode.setOnCheckedChangeListener { _, isChecked ->
prefs.edit().putBoolean("dark_mode", isChecked).apply()
}
}
}Een inlogtoken opslaan
Een authenticatietoken opslaan en controleren nadat de app opnieuw is gestart:
// Save token after login
fun saveToken(token: String) {
getSharedPreferences("auth", MODE_PRIVATE)
.edit()
.putString("token", token)
.apply()
}
// Check if user is logged in
fun isLoggedIn(): Boolean {
val token = getSharedPreferences("auth", MODE_PRIVATE)
.getString("token", null)
return token != null
}
// Clear on logout
fun logout() {
getSharedPreferences("auth", MODE_PRIVATE)
.edit()
.remove("token")
.apply()
}Gegevens verwijderen en wissen
Verwijder specifieke sleutels of wis alle gegevens:
.remove("key")— één item verwijderen.clear()— alles in het bestand verwijderen
Roep altijd .apply() aan (of .commit() als je een synchrone bevestiging nodig hebt).
SharedPreferences versus DataStore
SharedPreferences werkt goed, maar heeft beperkingen:
- Synchrone leesbewerkingen kunnen de hoofdthread blokkeren
- Geen typeveiligheid
Jetpack DataStore is de moderne vervanging — volledig asynchroon, met Kotlin Flow en typeveiligheid. Geef voor nieuwe projecten de voorkeur aan DataStore. SharedPreferences wordt nog steeds veel gebruikt en is prima geschikt voor kleine hoeveelheden gegevens.
Korte controle
Welke methode slaat gegevens asynchroon op in SharedPreferences zonder de UI-thread te blokkeren?
Samenvatting: SharedPreferences
Je kunt nu eenvoudige gegevens bewaren nadat de app is gestart:
- Ophalen met
getSharedPreferences(name, MODE_PRIVATE) - Schrijven:
.edit().putString(key, value).apply() - Lezen:
.getString(key, defaultValue) - Verwijderen:
.edit().remove(key).apply() - Gebruik
apply()(asynchroon) in plaats vancommit()(synchroon)
Volgende cursus: apparchitectuur — ViewModel, Room en Coroutines.
Leer Kotlin met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 36
- Lessen
- 152
Veelgestelde vragen
Is de les “SharedPreferences” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Android Academy, waaronder “SharedPreferences”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Android Academy bevat in totaal 6 lessen.
Wat leer ik in “SharedPreferences”?
Bewaar eenvoudige sleutel-waardegegevens tussen app-sessies met SharedPreferences. Leer voorkeuren op te slaan, te lezen en te verwijderen. Je oefent met Android Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Android Academy te beginnen?
Ervaring vooraf is niet nodig. Android Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 6.
Hoe lang duurt de les “SharedPreferences”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Android Academy?
Ja. Elke les over Android Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Kotlin-collecties
- De basis van RecyclerView
- Klikgebeurtenissen in RecyclerView
- SharedPreferences
- DataStore Preferences
- Adapters en DiffUtil