안드로이드 앱에서는 데이터를 저장하기 위해 SharedPreferences를 많이 사용해왔습니다. 하지만 SharedPreferences는 단순한 Key-Value 쌍의 데이터만 저장 가능하고, 복잡한 데이터 구조를 저장하기에는 적합하지 않습니다.
이를 대체하기 위해 Google은 Jetpack 라이브러리에 DataStore를 추가했습니다. DataStore는 SharedPreferences와 비교하여 다음과 같은 장점이 있습니다.
따라서, 이번 포스팅에서는 DataStore를 사용하여 안드로이드 앱에서 데이터를 저장하는 방법에 대해 알아보겠습니다.
DataStore를 사용하기 위해서는 다음과 같이 Gradle 설정을 추가해야합니다.
implementation "androidx.datastore:datastore-preferences:1.0.0"
DataStore는 Context를 매개변수로 받아서 생성됩니다.
val dataStore: DataStore<Preferences> = context.createDataStore(
name = "my_data_store"
)
위 코드에서 name
은 DataStore의 이름을 지정하는데 사용됩니다.
DataStore에 데이터를 쓰기 위해서는 edit()
함수를 사용하여 DataStore.Preferences
객체를 얻어야 합니다.
suspend fun saveData(data: MyData) {
dataStore.edit { preferences ->
preferences[KEY_MY_DATA] = data.toByteArray()
}
}
위 코드에서 KEY_MY_DATA
는 데이터를 식별하기 위한 Key 값입니다. toByteArray()
함수는 데이터를 바이트 배열로 변환하는 함수입니다.
DataStore에서 데이터를 읽기 위해서는 data
속성을 사용합니다.