View = MainActivity
ViewModel = Viewmodel Class
Model = Repository, Database
----Repository----
역할?
Activity/Fragment --(요청)-> ViewModel + Livedata --(요청)-> Repository --(요청)-> Model(room)
--(요청)-> Webservice
설명?
- 뷰모델과 상호작용하기 위해 잘 정리된 데이터 API를 들고 있는 클래스이다.
- 앱에 필요한 데이터(내장 DB, 외장 DB)를 가져온다.
- 뷰모델은 DB나 서버에 직접 접근하지 않고, 리포지토리에 접근하는 것으로 앱의 데이터를 관리
- Repository가 viewmodel과 room이라고 하는 db나 retrofit사이에 있습니다.
viewMode이 Activity나 Fragment에 보여주려고 하는 데이터를 Repository에 요청하면
Repository가 요청한 데이터를 받아서 보내줌.
- interface로서 Repository가 존재함, 이렇게하면 ViewModel은 누구에게서 가져온 데이터인지는 신경쓰지 않아도 됨.
즉, 자신의 비즈니스 로직만 집중하면 됨.
----viewmodel----
역할?
1. Activity/Fragment/View --(요청 : UI event)-> ViewModel(Livedata)
2. Activity/Fragment/View <-(응답 : observer에 응답)-- ViewModel(Livedata)
설명?
- UI를 위한 데이터를 가지고 있다.
- 구성이 변경되어도 살아남는다(회전, 언어변경)
- AsyncTask는 액티비티나 프래그먼트의 생명 주기에서 자유로울 수 없지만,
뷰모델은 뷰와 분리되어 있기 때문에 액티비티가 Destroy 되었다가 다시 Create 되어도 종료되지 않고 데이터를 여전히 가지고 있다
- 코드/역할 분리 서로 종속성 제거.
- 데이터와 뷰가 불일치 할 확률이 줄어둘게 됨.
'개발언어 > JAVA' 카테고리의 다른 글
안드로이드 fragment 생명주기 tag 넣기 (0) | 2022.02.18 |
---|---|
자바 변수 (0) | 2021.06.20 |
안드로이드 메모 + 음성녹음 앱 (2) | 2021.03.13 |
안드로이드, 자바 개념 정리2 (0) | 2021.02.09 |
운영체제 6(FCFS, RR) (0) | 2021.01.27 |