마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

온라인 데이터의 오프라인화

0 추천
흔히 카카오톡 같은 어플에서 매번 데이터를 받아오지 않고 기기 내부에 채팅 내역이나 채팅방을 저장해서 네트워크가 꺼져 있어도 저장된 데이터를 볼 수가 있는데

이는 db로 하는것인가요?? 아니면 다른 좋은 방법이 있나요??
ㅇㅇㅇㅇㅇㅇㅇㅇ (1,000 포인트) 님이 2022년 11월 8일 질문

1개의 답변

+1 추천
 
채택된 답변
안드로이드 개발자 문서를 참조하셔서 구현에 필요한 요소들을 익히시기 바랍니다.

https://developer.android.com/topic/architecture/data-layer/offline-first

Youtube 에 Android offline first architecure로 검색하셔서 관련된 비디오를 훑어보시거나 위의 문서의 저자의 동영상을 확인해 보세요.

https://www.youtube.com/watch?v=jaZ2gLMGUsM

핵심적인 포인트만 짚어드리자만, 네트워크 호출 시, 먼저 로컬 저장소(DB 같은 곳)을 체크해서 데이터가 있으면 이걸 먼저 리턴하고, 없다면 네트워크 호출을 합니다. 네트워크 호출이 성공하면 결과값을 로컬에 저장하고 UI에 업데이트 된 내용을 알려줍니다.
디바이스 캐시를 구현하시는 거라고 보시면 되구요, 캐시 정책을 만들어서 어떤 조건에서 로컬 데이터와 상관없이 강제로 네트워크에서 데이터를 다시 가져오게 할지 업무 요구사항에 맞게 정하셔서 구현하시는게 중요한 포인트 중의 하나입니다.

로컬저장소로는 Room을 많이 사용합니다. 주된 이유는 Room이 RxJava, LiveData, Flow같은 Observable 타입을 지원하기 때문에 변경이 있을 시 자동으로 통보를 받을 수 있습니다. Room의 이런 점이 필요하시면 사용하시면 되고, 그렇지 않다면 대체할 만한 걸 찾아보시면 됩니다.
spark (224,800 포인트) 님이 2022년 11월 8일 답변
ㅇㅇㅇㅇㅇㅇㅇㅇ님이 2022년 11월 24일 채택됨
감사합니다
스파크님 덕분에 프로젝트도 잘 마쳤고
지금은 합격해서 12월에 입사 예정입니다
언제나 고마워요~~!
정말 잘 됐네요.축하드려요.
...