Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 개발하는 정대리
- DB
- github action
- Android
- Myungpyo Shim
- 2레벨
- LazyRow
- suspend programming
- 브론즈 1
- 실버 4
- 피보나치 수 2
- navigation component
- LazyColumn
- 데이터베이스 첫걸음
- Activirty
- capitalize
- 브론즈1
- 백준
- gradlew
- 성빈랜드
- .github
- 프로그래머스
- 최댓값 최솟값
- Bitrise
- 실버2
- kotlin
- 데이터베이스
- compose
- keystore
- DB 기능
Archives
- Today
- Total
plzy의 개발 블로그
LiveData 대신 Flow가 나온 이유? 본문
Android에서 LiveData는 ViewModel에서의 데이터 값을 가지고 있어 view를 최신 값으로 유지해준다.
이러한 개념은 Android 개발을 한 단면 익숙할 것이다.
자주 사용하고 있는 LiveData가 Flow로 대체될 위기에 처했다.
어떠한 이유 때문에 그러는 걸까?
먼저 LiveData의 장단점에 대해 알아보자
LiveData의 장점
- Observer 패턴을 사용하기 때문에, 데이터의 변화를 실시간으로 구독자에게 알려 최신 값으로 유지할 수 있다.
- 라이프사이클을 알고 있기 때문에 생명주기에 따라 변한다.
- viewModel과 같이 사용할 경우 화면 회전 같은 현상이 일어나도 view의 데이터 값을 유지할 수 있다.
LiveData의 장점만 보면 flow가 나올 이유가 없을 것 같다.
하지만 LiveData에서도 치명적인 단점이 있다.
LiveData의 단점
- 클린 아키텍처의 domain에서는 순수 kotlin/java 만 써야 한다.
하지만 LiveData는 Android 플랫폼 의존되어 있어 옳지 못한 방법이 된다. - kotlin/coroutine 기반으로 만들어지지 않았다.
- 변환하는데 많은 보일러 플레이트 코드가 있다.
- 실행되는데 컨텍스트의 제어권이 부족하다.
이러한 단점을 보안하고자 Flow가 나왔다.
flow는 kotlin/corutine 기반이고 순수 kotlin 이기 때문에 LiveData의 문제점을 해결할 수 있다.
'Android' 카테고리의 다른 글
[Coroutine] suspend 를 왜 붙이는 걸까? (1) | 2022.06.30 |
---|---|
[Compose] compose로 splash 만들기 (0) | 2022.06.22 |
[Android] 코루틴이란 무엇인가. (0) | 2022.05.17 |
[Compose] compose에서 RecyclerView를 쓰는법 (0) | 2022.05.16 |
[Android] paging 라이브러리 어떻게 사용할까? (0) | 2022.05.06 |