[kotlin] 코틀린과 Android Jetpack의 DataStore를 사용하여 사용자 데이터를 저장하는 방법은?

안녕하세요! 이번 포스트에서는 코틀린과 Android Jetpack의 DataStore를 사용하여 사용자 데이터를 저장하는 방법에 대해 알아보겠습니다.

DataStore란 무엇인가요?

DataStore는 안드로이드 앱에서 간단한 키-값 쌍 형태의 데이터를 안전하게 저장하고 관리할 수 있는 라이브러리입니다. DataStore는 SharedPreferences와는 달리 비동기적으로 데이터를 저장하고 읽어오며, 안전하게 데이터를 암호화할 수 있습니다.

DataStore 설정

먼저, build.gradle 파일에 DataStore를 추가합니다.

dependencies {
    implementation "androidx.datastore:datastore-preferences:1.0.0"
}

DataStore의 사용을 시작하기 위해 앱의 Application 클래스에서 초기화합니다.

class MyApplication : Application() {
    val dataStore: DataStore<Preferences> by lazy {
        applicationContext.createDataStore(name = "settings")
    }
    // ...
}

데이터 저장하기

사용자 데이터를 저장하기 위해 Preferences 클래스를 사용합니다.

data class UserSettings(val username: String, val age: Int)

suspend fun saveUserSettings(username: String, age: Int, dataStore: DataStore<Preferences>) {
    dataStore.edit { preferences ->
        preferences[KEY_USERNAME] = username
        preferences[KEY_AGE] = age
    }
}

private object PreferencesKeys {
    val KEY_USERNAME = preferencesKey<String>("key_username")
    val KEY_AGE = preferencesKey<Int>("key_age")
}

위 코드에서 saveUserSettings 함수를 호출하여 사용자 설정을 저장할 수 있습니다.

데이터 불러오기

저장된 사용자 데이터를 불러오기 위해서는 다음과 같이 코드를 작성할 수 있습니다.

suspend fun getUserSettings(dataStore: DataStore<Preferences>): UserSettings {
    val preferences = dataStore.data.first()
    val username = preferences[PreferencesKeys.KEY_USERNAME] ?: "default_username"
    val age = preferences[PreferencesKeys.KEY_AGE] ?: 0
    return UserSettings(username, age)
}

요약

이렇게 DataStore를 사용하여 안드로이드 앱에서 사용자 데이터를 저장하고 관리하는 방법에 대해 알아보았습니다. DataStore는 SharedPreferences보다 더 안전하고 효율적으로 데이터를 다룰 수 있습니다. 안드로이드 앱에서 데이터를 다룰 때는 DataStore를 고려해보시기 바랍니다.

더 많은 정보를 원하시면 Android Developers 공식 문서를 참고하시기 바랍니다.