티스토리 뷰
다들 LiveData에서 Flow 간다고 하는데....
Flow는 LiveData 를 대체하지 못하지만 StateFlow라는 놈이 나오면서 대체가 가능해 졌다.
(이대로라면 LiveData는 deprecated 되려나? 차라리 그렇게 되면 선택권이라도 없어지겠구먼... 아직 고민되는군..)
적용하면서.. 익힌것들 간략 정리..
// getData()는 Flow<Data> 를 반환
// 1. Flow
val data = useCase.getData()
// 2. LiveData
val dataLiveData: LiveData<Data> = useCase.getData().asLiveData()
// 3. StateFlow
private val _data = MutableStateFlow<Data?>(null)
val data: StateFlow<Result<Data?>> = _data
init {
viewModelScope.launch {
useCase.getData().collect {
_data.value = it
}
}
}
UI에 data를 표시하는데는 세방법 모두 동일하다.
하지만 Flow는 data의 흐름을 발생시키기만 하고 데이터를 저장시켜두지는 않는다..흘러가면 끝..
그리고 Flow는 lifecycle과는 전혀 연관이 없기때문에 메모리 누수등을 직접 관리해 줘야 한다.
위 코드의 Flow를 바로 접근해서 쓰면 데이터 표시에는 문제가 없으나
회전처리등을 할때 매번 data를 새롭게 얻어오고 비효율적이다. (새로 얻어오싶은 경우면 해도 될듯)
그래서 2,3번같이 Flow를 데이터 홀더 클래스인 LiveData나 StateFlow에 넣어두고 사용해야 한다.
여기서 드는 생각은
Flow는 말 그대로 흐름인데 흐름이 필요없는 경우 그냥 한번만 가져와서 쓰고 마는 경우에는 굳이 Flow를 써야 하나 싶은 생각이 든다.
StateFlow에 직접 값을 넣어도 될거 같은데...
하지만 Paging 라이브러리를 쓰거나 연속적인 데이타를 처리하기엔 아주 좋다
그래서 아래와 같이 표현했나 보다
Flow: Simple things are harder and complex things are easier
일단 트렌드니 따라가는걸로..
여러 참고 사이트
* https://medium.com/androiddevelopers/migrating-from-livedata-to-kotlins-flow-379292f419fb
Migrating from LiveData to Kotlin’s Flow
In this post you’ll learn how to expose Flows to a view, how to collect them, and how to fine-tune it to fit specific needs.
medium.com
[번역]LiveData에서 Kotlin의Flow로 Migrating
LiveData에서 Kotlin의 Flow로 변경하기
hongbeomi.medium.com
* https://kotlinworld.com/233?category=973477
[Coroutine Flow] 3. stateIn 사용하여 Flow를 StateFlow로 변환하기
Flow와 StateFlow 우리는 리액티브 프로그래밍을 할 때 여러 데이터 흐름(flow)를 하나로 합쳐 하나의 데이터 흐름(Flow)으로 만들어낸다. 예를 들어 아래의 그림3에서는 Flow가 3개 있고 이것이 합쳐져
kotlinworld.com
* https://readystory.tistory.com/207
[Android] LiveData VS StateFlow, 왜 StateFlow 를 써야할까?
LiveData 는 Lifecycle 라이브러리 중 하나로, 안드로이드 공통의 라이프사이클과 관련된 문제를 해결할 수 있게 해 주면서 앱 개발시 보다 더 유지보수하기 쉽게, 테스트하기 쉽게 만들어주는 라이
readystory.tistory.com
- Total
- Today
- Yesterday
- 신주쿠
- 락
- 공연
- 일본
- 드라마
- epik high
- 진해
- 노래
- 서울숲별밤축제
- Mac
- 일어일기
- 책
- 영화
- 일기
- 음악
- Java
- 안드로이드
- 코이데 케이스케
- 사진
- postcrossing
- 여행
- android
- 인디
- 아사가야
- 도쿄
- 야마다 타카유키
- 에픽하이
- 포스트크로싱
- Linux
- 잡담
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |