Junior
Pracovali ste s DataStore Preferences v Android?
sobes.tech AI
Odpoveď od AI
Áno, pracoval.
DataStore Preferences je asynchrónny ekvivalent SharedPreferences, ktorý je súčasťou AndroidX DataStore. Umožňuje bezpečne ukladať jednoduché páry kľúč-hodnota pomocou KSP nad Kotlin Flow alebo RxJava3 pre asynchrónnu prácu a Protobuf/Proto DataStore alebo Proto DataStore pre typy dát.
Hlavné výhody DataStore Preferences v porovnaní so SharedPreferences:
- Asynchrónnosť: Funguje s použitím Flow alebo RxJava3, čo zabraňuje blokovaniu hlavného vlákna a eliminuje problémy s ANR.
- Bezpečnosť: Atómové operácie čítania/zápisu zaručujú konzistenciu dát.
- Typová bezpečnosť: S Protobuf DataStore môžete definovať schému dát, čo eliminuje chyby pri práci s typmi.
- Reaktivita: Umožňuje sledovať zmeny dát v reálnom čase.
Príklad použitia DataStore Preferences s Kotlin Flow:
// Vytvorenie DataStore
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
// Čítanie dát
suspend fun readString(context: Context, key: String): String? {
val preferencesKey = stringPreferencesKey(key)
val preferences = context.dataStore.data.first()
return preferences[preferencesKey]
}
// Zápis dát
suspend fun writeString(context: Context, key: String, value: String) {
val preferencesKey = stringPreferencesKey(key)
context.dataStore.edit { settings ->
settings[preferencesKey] = value
}
}
Príklad použitia KSP na vytvorenie typovej bezpečnosti:
// V build.gradle (:app) pridajte plugin
plugins {
...
id("com.google.devtools.ksp") version "1.7.21-1.0.8" // Príklad verzia, skontrolujte aktuálnu
}
// V build.gradle (:app) pridajte závislosti
dependencies {
...
implementation("androidx.datastore:datastore-preferences:1.0.0") // Skontrolujte aktuálnu verziu
implementation("androidx.datastore:datastore-preferences-core:1.0.0") // Skontrolujte aktuálnu verziu
ksp("androidx.datastore:datastore-preferences-core:1.0.0") // Skontrolujte aktuálnu verziu
}
// Definovanie rozhrania pre KSP
interface SettingsPref {
val appName: String
val isNotificationsEnabled: Boolean
val theme: Int
}
// Generovanie implementácie pomocou KSP
// Vytvorí triedu typu SettingsPrefImpl, ktorú môžete použiť na prístup k dátam
DataStore Preferences je odporúčaný spôsob ukladania jednoduchých nastavení a dát v Android, nahradzujúc zastarané SharedPreferences.