Composable에서 올바른 CoroutineScope을 선택하는 것이 중요한 이유 Composable 내부에서 코루틴을 수행할 경우 Composable에 대한 Recomposition이 일어날 때 정리되어야 하는 Coroutine이 정리가 안된 상태로 계속해서 Coroutine이 쌓일 수 있다. Recomposition은 자주 일어나는 동작이므로 Recomposition마다 Coroutine을 생성하는 것은 위험하며 심할 경우 앱 크래시를 발생시킬 수도 있다. 따라서 Composable에서 Coroutine을 생성한다면 Recomposition이 일어날 때 취소되어야 한다(꼭 그렇지 않은 경우도 있지만 그래야 하는 경우가 대부분이다). Compose는 이를 위해 Composable의 Lifecycle..
lifecycleScope
Android에서 올바른 CoroutineScope를 사용해야 하는 이유 CoroutineScope는 Coroutine Job이 실행되는 Scope이다. CoroutineScope가 해제되면 CoroutineScope에 속한 Coroutine Job들은 모두 해제된다. 따라서 만약 CoroutineScope이 안드로이드 구성요소(Activity, ViewModel)의 Lifecycle에 따라 올바로 할당 해제되지 않는다면 해제되어야 하는 Job들이 계속해서 동작해서 Memory Leak으로 이어진다. 예를들어 App의 Lifecycle동안 유지되는 GlobalScope를 1초마다 string을 내보내는 flow를 collect하기 위해 사용해보자. class MainActivity : ComponentA..