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