Junior
Pracoval jste s DataStore Preferences v Androidu?
sobes.tech AI
Odpověď od AI
Ano, pracoval jsem.
Preferences DataStore je asynchronní ekvivalent SharedPreferences, který je součástí AndroidX DataStore. Umožňuje bezpečně ukládat jednoduché páry klíč-hodnota pomocí KSP nad Kotlin Flow nebo RxJava3 pro asynchronní práci a Protobuf/Proto DataStore nebo Proto DataStore pro datové typy.
Hlavní výhody Preferences DataStore oproti SharedPreferences:
- Asynchronní: Funguje s Flow nebo RxJava3, což zabraňuje blokování hlavního vlákna a předchází problémům s ANR.
- Bezpečnost: Atomické operace čtení/zápisu zaručují konzistenci dat.
- Typová bezpečnost: S Protobuf DataStore lze definovat schéma dat, což zabraňuje chybám při práci s typy.
- Reaktivita: Umožňuje sledovat změny dat v reálném čase.
Příklad použití Preferences DataStore s Kotlin Flow:
// Vytvoření DataStore
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
// Čtení dat
suspend fun readString(context: Context, key: String): String? {
val preferencesKey = stringPreferencesKey(key)
val preferences = context.dataStore.data.first()
return preferences[preferencesKey]
}
// Zápis dat
suspend fun writeString(context: Context, key: String, value: String) {
val preferencesKey = stringPreferencesKey(key)
context.dataStore.edit { settings ->
settings[preferencesKey] = value
}
}
Příklad použití KSP pro vytvoření bezpečného přístupu typu:
// V build.gradle (:app) přidejte plugin
plugins {
...
id("com.google.devtools.ksp") version "1.7.21-1.0.8" // Příklad verze, zkontrolujte aktuální
}
// V build.gradle (:app) přidejte závislosti
dependencies {
...
implementation("androidx.datastore:datastore-preferences:1.0.0") // Zkontrolujte aktuální verzi
implementation("androidx.datastore:datastore-preferences-core:1.0.0") // Zkontrolujte aktuální verzi
ksp("androidx.datastore:datastore-preferences-core:1.0.0") // Zkontrolujte aktuální verzi
}
// Definice rozhraní pro KSP
interface SettingsPref {
val appName: String
val isNotificationsEnabled: Boolean
val theme: Int
}
// Generování implementace pomocí KSP
// Vytvoří třídu typu SettingsPrefImpl, kterou lze použít pro přístup k datům
DataStore Preferences je doporučený způsob ukládání jednoduchých nastavení a dat v Androidu, nahrazuje zastaralý SharedPreferences.