Android Repository
업데이트:
카테고리: Android
/태그: Repository
네트워크 ↔ 앱 서로 통신할 때, 데이터 저장 방식에는 여러가지가 존재한다.
-
Retrofit → 소규모 데이터 세트에 적합
안드로이드 용 type-safe REST client를 구현
네트워크의 결과 사본을 로컬로 저장할 수 있다.
-
SharedPreferences
key - value 저장, 적은 키와 간단한 값 저장에 적합
-
앱 내부 저장소 → 미디어, 데이터 파일 저장, 파일을 직접 관리하는 경우
앱 전용이기 때문에 앱이 삭제되면 지워진다.
-
Room → 복잡하고 구조하된 데이터의 권장
로컬 SQLite DB를 이용해 구조화된 데이터를 저장
Repository
UI Controller - ViewModel - Repository - network
데이터 소스를 ui 로직과 분리하는 작업
LiveData와 같은 구성요소가 Repository를 통해 상호작용
DB를 local에서 들고올수도 있고, 네트워크와 통신하여 보여줄 수도 있다.
Repository 제작
class VideosRepository(private val database: VideoDatabase) {
supend fun refreshVideos() {
withContext(Dispatcher.IO) {
// 네트워크의 응답 결과를 받아 playlist에 저장
val playlist = Network.devbytes.getPlaylist()
// db에 응답 결과를 저장
database.videoDao.insertAll(playlist as DatabaseModel())
}
}
}