[Android] flow collect vs launchIn

윤호이·2023년 11월 8일
0

coroutine

목록 보기
4/7
post-thumbnail

서론

coroutine Flow를 사용할 때 launchIn과 collect의 차이점이 뭐냐고
질문 받았을 때 말문이 막혔습니다.
딱히 뭔 차이인지 모르고 썻던것입니다.
이번 포스팅에서 차이를 알아보도록 하겠습니다.

collect

coroutineScope.launch {
    flowOf(1, 2, 3)
        .collect { println(it) }
}

collect는 정지함수나 coroutineScope 안에서만 호출이 가능합니다.

launchIn

flowOf(1, 2, 3)
    .onEach { println(it) }
    .launchIn(coroutineScope)

launchIn은 일반함수에서도 호출이 가능합니다.

val job = flowOf(1, 2, 3)
    .onEach { println(it) }
    .launchIn(coroutineScope)

job.cancel()

또한 job을 통해 작업을 컨트롤 할 수도 있습니다.

결론

collect와 launchIn사실 동작에서의 큰차이는 없지만
호출을 어디에서 하는지에 따라 유동적으로 정해주시면 되겠습니다.

참조

https://morioh.com/a/f8bdf13f844e/differences-in-methods-of-collecting-kotlin-flows

profile
열정은 내 삶의 방식, 꾸준함은 내 삶의 증명

0개의 댓글

관련 채용 정보