Android Academy · Les

SharedPreferences

Bewaar eenvoudige sleutel-waardegegevens tussen app-sessies met SharedPreferences. Leer voorkeuren op te slaan, te lezen en te verwijderen.

Les 4 van 611 stappen

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 van commit() (synchroon)

Volgende cursus: apparchitectuur — ViewModel, Room en Coroutines.

Gratis beginnen

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

  1. Kotlin-collecties
  2. De basis van RecyclerView
  3. Klikgebeurtenissen in RecyclerView
  4. SharedPreferences
  5. DataStore Preferences
  6. Adapters en DiffUtil
← Terug naar Android Academy