2021. 11. 8. 22:56ㆍKotlin/Android
Android 앱 개발 시에, MVVM 패턴을 통해 서버와 통신을 할 때 이러한 질문을 던질 수 있다.
MVVM 패턴이란 Model, View, ViewModel 의 계층을 나누어서 서버와의 데이터 통신을 관리하는 아키텍처 패턴이다.
일반적으로
ViewModel에서는 LiveData를, Model에서는 Flow형을 사용한다.
# LiveData
View에 데이터의 변경을 알리기 위해 고안된 자료형이다.
Observer 패턴으로, 감싸고 있는 값이 변경되면 View에 등록된 함수를 수행한다.
map이나 switchMap 함수를 사용하여 여러 리소스를 가진 MediatorLiveData를 가질 수 있다.
MutableLiveData 형으로 더욱 편리하게 감싸고 있는 데이터를 변경을 할 수 있다.
일반적으로 ViewModel에서 생성되며,
liveData {}로 생성할 수는 있지만, Flow형으로 초기화하고 asLiveData()로 변환하여 사용하는 것을 권장한다.
# Flow
https://developer.android.com/kotlin/flow?hl=ko
Coroutine 기반으로 build되어, 여러 번 값을 순차적으로 내보낼 수 있는 자료형이다.
코루틴을 대체할 수 있으며, 비동기 작업으로 값을 하나씩 생성할 수 있는 데이터 스트림이다.
Flow는 일반적으로 Model쪽에 위치하면서, Room DB가 변경될 때마다 Flow를 생성 및 변환하여 LiveData에게 준다.
또 Room DB는 모든 query를 각각 하나의 Thread에서 실행하도록 하기 때문에,
Observed Flow는 감싸고 있는 데이터가 변경되었으면, 특정 Observer에게 알릴 수 있다.
# 참고 자료
다음은 StackOverflow 사이트의 "kotlin flow vs livedata" 라는 게시물이다.
https://stackoverflow.com/questions/58773453/kotlin-flow-vs-android-livedata#
'Kotlin > Android' 카테고리의 다른 글
OkHttp 와 Retrofit 차이 (0) | 2021.11.06 |
---|---|
Android Studio에서 SHA-1키 얻는 방법 (0) | 2021.10.31 |
MediatorLiveData로 LiveData 병합하기 (0) | 2021.10.27 |
LiveData 변환하기 (0) | 2021.10.27 |
LiveData 생성하기 (0) | 2021.10.26 |