فهرست مطالب
DataStore یک کتابخانه از Android Jetpack است که به منظور ذخیرهسازی دادههای بسیار ساده و کمحجم در Android استفاده میشود. این کتابخانه برای جایگزینی SharedPreferences طراحی شده است و از Coroutines پشتیبانی میکند.
برای استفاده از DataStore در یک پروژه Kotlin، مراحل زیر را دنبال کنید:
افزودن وابستگی: به فایل build.gradle ماژول شما این خطوط را اضافه کنید:
implementation "androidx.datastore:datastore-preferences:1.0.0"
تعریف Schema: ابتدا یک Schema برای DataStore خود تعریف کنید. این Schema مشخص میکند که دادههای شما چگونه ذخیره و بازیابی میشوند.
برای مثال:
// در فایل MyDataStore.kt
import androidx.datastore.preferences.core.preferencesKey
object MyDataStore {
val EXAMPLE_COUNTER = preferencesKey<Int>("example_counter")
}
ایجاد DataStore: در فایل Application یا هرجایی که مناسب است،
یک instance از DataStore ایجاد کنید:
// در فایل MyApplication.kt
import android.app.Application
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.createDataStore
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.SupervisorJob
class MyApplication : Application() {
val applicationScope = CoroutineScope(SupervisorJob())
val dataStore: DataStore<Preferences> by lazy {
createDataStore(name = "my_data_store", MyDataStore::counter)
}
}
خواندن از DataStore: برای خواندن اطلاعات از DataStore،
از dataStore.data استفاده کنید. برای مثال:
// در یک فایل ViewModel یا دیگر کلاسها
import androidx.lifecycle.ViewModel
import androidx.lifecycle.asLiveData
import kotlinx.coroutines.flow.map
class MyViewModel(private val myApplication: MyApplication) : ViewModel() {
val exampleCounter = myApplication.dataStore.data
.map { preferences ->
preferences[MyDataStore.EXAMPLE_COUNTER] ?: 0
}
.asLiveData()
}
نوشتن به DataStore: برای نوشتن اطلاعات به DataStore،
از تابع dataStore.edit استفاده کنید:
// در یک کلاس یا ViewModel
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
class MyViewModel(private val myApplication: MyApplication) : ViewModel() {
fun incrementCounter() {
viewModelScope.launch {
val currentCounter = myApplication.dataStore.data.first()[MyDataStore.EXAMPLE_COUNTER] ?: 0
myApplication.dataStore.edit { preferences ->
preferences[MyDataStore.EXAMPLE_COUNTER] = currentCounter + 1
}
}
}
}
در اینجا، ما از dataStore.edit برای شروع یک عملیات ویرایش استفاده کردیم. مقادیر جدید را از DataStore خوانده، و مقدار EXAMPLE_COUNTER را افزایش دادیم.
نظرات
دیدگاهی برای این مطلب ثبت نشده است.