업데이트:

카테고리:

/

태그:

네트워크 ↔ 앱 서로 통신할 때, 데이터 저장 방식에는 여러가지가 존재한다.

  1. Retrofit → 소규모 데이터 세트에 적합

    안드로이드 용 type-safe REST client를 구현

    네트워크의 결과 사본을 로컬로 저장할 수 있다.

  2. SharedPreferences

    key - value 저장, 적은 키와 간단한 값 저장에 적합

  3. 앱 내부 저장소 → 미디어, 데이터 파일 저장, 파일을 직접 관리하는 경우

    앱 전용이기 때문에 앱이 삭제되면 지워진다.

  4. 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())
		}
	}
}