[Android] flow에 대하여

김민주·2022년 12월 28일
0

Android

목록 보기
20/21

Flow

: 순차적으로 값을 배출하는 비동기 데이터 스트림

suspend 함수는 1개의 값을 반환하기 때문에 비동기로 여러개의 값을 계산하여야 할 때 Flow를 사용한다.
코루틴을 기반으로 빌드되며, CoroutineScope안에서 동작한다.
suspend 가능한 iterator이다.
Flow는 실시간 데이터 업데이트 및 데이터 스트림에 적합하다.
cold stream이다.

emit()

  • 값을 방출한다.

collect()

  • 값을 수집한다.
  • 정지 함수이므로 코루틴 내에서 실행해야 한다

collectLatest()

새로운 data가 들어오면 이전 데이터가 처리되는 것을 멈추고 새로운 데이터를 처리한다.
순차적으로 데이터를 처리하는 collect의 데이터의 지연이 발생하는 것을 보완한 것이다.

SharedFlow

Flow->SharedFlow->StateFlow

value를 받을 수 없기 때문에 hot stream으로 동작하도록 만든 것.
Livedata에서 SharedFlow로 변경하는 추세이다.

stateIn(scope,started,initialValue)

SharingStarted의 3가지 옵션
1. SharingStarted.Eagerly: 콜렉터 없어도 바로 sharing, 중간 중지X
2. SharingStarted.Lazily: 콜렉터 등록 후 바로 sharing, 중간 중지X
3. SharingStarted.WhileSubscribed: 콜렉터 등록 후 바로 sharing 콜렉터 사라지면 바로 중단

flow dispatcher를 변경하려면 flowOn 함수 이용





https://www.inflearn.com/course/%EC%95%8C%EA%B8%B0%EC%89%AC%EC%9A%B4-modern-android/unit/112161?tab=curriculum

profile
𝐃𝐨𝐧'𝐭 𝐛𝐞 𝐚 𝐩𝐫𝐨𝐜𝐫𝐚𝐬𝐭𝐢𝐧𝐚𝐭𝐨𝐫💫

0개의 댓글