사용자 도구

사이트 도구


android:datastore
datastore

개요

Android에서 설정 등을 기록하고 불러오는 기능을 말한다. 과거에 shared preference라는 이름으로 제공하던 api가

현재는 Datastore라는 이름으로 변경되었다.

필요한 의존성 파일

datastore api와, lifecycle api가 필요하다. 당음과 같다.

모듈단계의 그래들 파일에 다음의 의존성을 추가한다.

    // DataStore
    // Alternatively - use the following artifact without an Android dependency.
    implementation("androidx.datastore:datastore-preferences:1.2.0-alpha01")
    val lifecycle_version = "2.5.1"
    implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version")

Datastore 클래스 Helper 클래스 만들기

1. 소스파일

다음과 같이 헬퍼 클래스를 만들어서 읽기와 쓰기를 한다.

"DatastoreMemorize.kt"
package com.dklaw.memorize.database
 
import android.content.Context
import androidx.datastore.core.DataStore
import androidx.datastore.core.IOException
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.core.booleanPreferencesKey
import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.preferencesDataStore
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.map
 
class DataStoreMemorize(private val context : Context) {
 
    private val Context.dataStore : DataStore<Preferences> by preferencesDataStore(name = "appPreferences")
 
    private val FILTER_ON = booleanPreferencesKey("FilterOn") // string 저장 키값
 
    // Flow : coroutines.flow import 해야됨
    val valueOfFilter : Flow<Boolean> = context.dataStore.data
        .map {preferences ->
            preferences[FILTER_ON] ?: false
        }
 
 
 
    // String값을 stringKey 키 값에 저장
    suspend fun setFilterSwitch(switch : Boolean){
        context.dataStore.edit { preferences->
            preferences[FILTER_ON] = switch
        }
 
    }
 
}

싱글턴으로 만들기

===== 실제 compose내에서 사용하기

로그인하면 댓글을 남길 수 있습니다.

android/datastore.txt · 마지막으로 수정됨: 2025/04/27 02:59 저자 이거니맨