현재 안드로이드에서 dataStore 사용을 적극 권장. 개발자 문서에서도 sharedPreferences 사용 가이드 제거....
프로토콜 버퍼를 사용하여 키-값 쌍 또는 Typed Object를 저장할 수 있는 저장소 솔루션.
코루틴 및 flow를 이용하여 비동기적이고 일관된 트랜잭션 방식으로 데이터를 저장.
*프로토콜 버퍼 : 구글의 데이터를 직렬화 하기위한 매커니즘
2번 예외처리 예시,,
val text : Flow<String> = context.dataStore.data
// 여기 catch문에서 처리
.catch { exception ->
if (exception is IOException) {
emit(emptyPreferences())
} else {
throw exception
}
}
.map {preferences ->
preferences[stringKey] ?: ""
}