Junior
Դուք աշխատե՞լ եք Android-ում DataStore Preferences-ով։
sobes.tech AI
Պատասխան AI-ից
Այո, աշխատել է:
DataStore Preferences-ը ասինխրոնային է՝ համեմատած SharedPreferences-ի, որը մտնում է AndroidX DataStore-ի մեջ: Այն ապահովում է անվտանգ պահպանում պարզ բանալին-արժեք զույգեր, օգտագործելով KSP Kotlin Flow կամ RxJava3-ի վրա՝ ասինխրոնային աշխատանքի համար և Protobuf/Proto DataStore կամ Proto DataStore՝ տվյալների տեսակների համար:
DataStore Preferences-ի հիմնական առավելությունները՝ համեմատած SharedPreferences-ի՝
- Ասինխրոնություն: աշխատում է Flow կամ RxJava3-ի միջոցով, ինչը կանխում է հիմնական հոսքի բլոկավորումը և բացառում է ANR խնդիրները:
- Անվտանգություն: Ատոմարային կարդալու/գրելու գործողությունները ապահովում են տվյալների համահունչությունը:
- Տիպային անվտանգություն: Protobuf DataStore-ի հետ կարող եք սահմանել տվյալների սխեմա, ինչը բացառում է սխալները տվյալների տեսակների հետ աշխատելիս:
- Ռեակտիվություն: թույլ է տալիս իրական ժամանակում հետևել տվյալների փոփոխություններին:
Օրինակ՝ DataStore Preferences-ի օգտագործում Kotlin Flow-ի հետ՝
// DataStore-ի ստեղծում
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
// Տվյալների կարդալ
suspend fun readString(context: Context, key: String): String? {
val preferencesKey = stringPreferencesKey(key)
val preferences = context.dataStore.data.first()
return preferences[preferencesKey]
}
// Տվյալների գրանցում
suspend fun writeString(context: Context, key: String, value: String) {
val preferencesKey = stringPreferencesKey(key)
context.dataStore.edit { settings ->
settings[preferencesKey] = value
}
}
KSP-ի օգտագործման օրինակ՝ տիպային անվտանգ մուտք գործելու համար՝
// build.gradle (:app)-ում ավելացրեք պլագինը
plugins {
...
id("com.google.devtools.ksp") version "1.7.21-1.0.8" // Օրինակ՝ տարբերակ, ստուգեք արդիականությունը
}
// build.gradle (:app)-ում ավելացրեք կախվածությունները
dependencies {
...
implementation("androidx.datastore:datastore-preferences:1.0.0") // Ստուգեք արդիականությունը
implementation("androidx.datastore:datastore-preferences-core:1.0.0") // Ստուգեք արդիականությունը
ksp("androidx.datastore:datastore-preferences-core:1.0.0") // Ստուգեք արդիականությունը
}
// KSP-ի համար սահմանեք ինտերֆեյս
interface SettingsPref {
val appName: String
val isNotificationsEnabled: Boolean
val theme: Int
}
// Գեներացրեք իրականացմանը՝ KSP-ի միջոցով
// Դա կստեղծի SettingsPrefImpl դաս, որը կարող եք օգտագործել տվյալներին մուտք գործելու համար
DataStore Preferences-ը առաջարկվող միջոց է՝ պահելու պարզ կարգավորումներ և տվյալներ Android-ում՝ փոխարինելով հնացած SharedPreferences-ը։