반응형
작성이유
디바이스에 영구저장 되어야 하는 데이터를 관리하기 위한 방법을 찾은 과정을 기록
왜 Shared Preferences를 사용 안 하고?
: 현재 안드로이드에서 Data store의 사용을 적극 권장 (개발자 문서에서도 SharedPreferences 사용 가이드를 뺌)
- 실제 xml 파일 I/O 작업을 하는 것으로 UI Thread에서 작업할 경우 안전하지 않다.
- Runtime Exception으로부터 안전하지 않다.
- 비동기 API를 제공하지만 리스너를 통해서만 값을 읽을 수 있다.
- Type-Safety를 제공하지 않는다.
- 값 변경 시 리스너를 통해서만 비동기식 액세스를 제공
- 데이터 타입을 변경하면서 생기는 런타임에러, ANR
Data Store?
- SharedPreferences를 대체하기 위해 Jetpack에서 발표한 라이브러리
- Kotlin coroutine과 Flow를 사용하여 비동기적으로, 일관되게 데이터를 저장할 수 있다
Preferences DataStore
- key - value 형태로 저장
- Type-Safety를 제공 X
Proto DataStore
- Protocol buffer를 통해 저장
- 미리 정의된 스키마를 통해 Type_Safety 보장
-> 키-밸류 형태라서 리스트로 저장되어야 하는 최근 검색어 데이터와는 적합하지 않다 느낌
*상황별 권장 라이브러리
- 작은양의 데이터 저장 ? -> Preferences
- 앱의 야간모드 또는 다크모드에 대한 저장
- 사용자가 앱을 처음 실행할 때의 상태 저장
- 항목 목록에 대한 사용자 정렬 순서 저장
- 많은 양의 데이터 저장? -> Room
- 사용자가 즐겨찾기로 표시한 노래 목록 저장
- 게시물 목록 저장
Room
- SQLite의 추상 레이어를 제공하여 SQLite의 객체를 매핑하는 역할 -> SQLite의 기능을 모두 사용할 수 있고, DB로서의 접근을 편하게 도와주는 라이브러리
- SQLite를 직접 사용하는 것보다 무의미한 보일러플레이트 코드의 반복을 줄일 수 있고 컴파일 시간을 체크할 수 있다.
아파트이름, 두가지 pk 데이터를 저장해야 하므로 키-밸류보단 sql같은 형식으로 관리하는게 데이터 정제 및 관리에 용이하다고 판단함
반응형
'Android' 카테고리의 다른 글
Protocol Buffer - 프로토콜 버퍼 (0) | 2022.08.09 |
---|---|
[Android/Java] 다중이미지 미리보기 구현 (0) | 2022.01.18 |
[Java] 하나의 RecyclerView에 서로 다른 뷰 넣기 ( TCP 채팅 예제 - 카카오톡 채팅화면) (0) | 2022.01.12 |
댓글