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 ордуна колдонулат.