Activity CoroutineScope

lifecycleScope 사용의 한계점 lifecycleScope만을 사용해 Coroutine Job을 사용하는 것은 한계점이 있다. 바로 onDestroy 시 Job이 cancel된다는 것이다. onDestroy 시 job이 cancel 된다는 것은 백그라운드로 내려가는 onStop이 일어났을 때 여전히 Job이 수행됨을 뜻한다. 즉, Activity를 finish 시키는게 아니라. 홈버튼을 눌러 onStop만 되었더라면 Activity에서는 여전히 데이터를 수집하게 된다. 이러한 불필요한 동작은 백그라운드로 내려간 앱의 메모리 사용량을 증가시켜 시스템에 의한 Crash를 만들어낼 수도 있고, 사용자가 원치 않는 데이터 사용이 일어나도록 만들 수도 있다. 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..
Dev.Cho
'Activity CoroutineScope' 태그의 글 목록