Shared Preferences와 Datastore Shared Preferences를 Datastore로 Migration 하기 위해서는 Datastore가 저장되는 공간에 Shared Preferences가 저장했던 정보를 다시 저장해야 한다. 이 뜻은 Shared Preferences를 Datastore로 이전 저장하기 위해 Migration 용 스펙을 정의해놓은 객체가 필요하다는 뜻이다. Shared Preferences를 Datastore로 이전하는 작업은 보통 두가지 상황의 경우에 고려된다. 첫 째, Shared Preferences가 새로 만들 Datastore과 Dependency가 있어 같이 작업하는 것이 좋은 경우. 둘 째, Datastore에서 제공하는 Coroutines, Flow..
Android Jetpack
환경세팅 안드로이드에서 Proto Datastore을 사용하기 위해서는 Type Safety를 위한 처리를 해주어야 하기 때문에 Preference Datastore보다 복잡하다. Gradle 파일 세팅 1. 모듈 수준의 gradle 파일에 플러그인을 추가한다. plugins { .. id("com.google.protobuf") version "0.8.17" } 2. 모듈 수준의 gradle에 라이브러리를 추가한다. 하나는 datastore 라이브러리이고 다른 하나는 protocol buffer을 위한 java 라이브러리이다. dependencies { .. implementation("androidx.datastore:datastore:1.0.0") implementation("com.google.p..
Proto Datastore이란 무엇인가? public interface DataStore { public val data: Flow public suspend fun updateData(transform: suspend (t: T) -> T): T } Proto Datastore은 DataStore 인터페이스를 구현하는, 간단한 데이터를 key-value 쌍으로 저장하기 위한 데이터 저장소 솔루션이다. 이전 SharedPreference나 Preference Datastore과는 달리 저장되는 데이터의 Type Safety를 보장한다는 점이 큰 장점이다. 따라서 Primitive Type이나 간단한 Collection 타입의 저장만이 지원되는 SharedPreference나 Preference Data..
Preference Datastore이란? public interface DataStore { public val data: Flow public suspend fun updateData(transform: suspend (t: T) -> T): T } Preference Datastore이란 DataStore 인터페이스를 구현하는 구현체로 Android에서 간단한 데이터를 key-value 쌍으로 저장하기 위해 사용하는 라이브러리이다. SharedPreference와 같이 Type Safety를 제공하지 않는 데이터 저장소 솔루션이다. Type Safety을 제공하지 않아 데이터 저장소에서 꺼낸 데이터에 대해 타입을 잘못 지정한다면 오류가 발생할 수 있다. 그럼에도 여전히 비동기 작업을 위해 Corou..
SharedPreferences의 한계점 Datastore가 나오기 전까지 안드로이드에서는 가벼운 데이터를 key-value 쌍으로 저장하기 위해 SharedPreferences를 사용했다. SharedPreference는 다양한 한계점이 있었다. SharedPreference는 비동기 작업을 제대로 해주지 않으면 ANR을 발생시킬 수 있으며, 오류가 생길 시 확인이 불가능했으며, 런타임에 예외가 생기면 런타임 애러가 발생해 잘못 사용하면 앱이 강제 종료될 수도 있었다. 또한 strong consistency가 보장되는 api가 없어 다중 스레드 환경에서 다른 결과값이 생길 수 있었다. 이러한 문제 외에도 type safety가 보장되지 않아 어떤 데이터가 저장되고 추출되는지를 일일히 데이터로 type ..