[Android] LifecycleScope의 종류

1. Activity의 lifecycleScope
- Activity나 Fragment의 전체 생명주기를 따름
Lifecycle.State.DESTROYED가 되면 자동으로 코루틴 취소
따라서 아래 코드는 “3datastore=PATTERN” 로그만 찍힌다.
1 | override fun onDestroy() { |
2. Fragment의 viewLifecycleOwner.lifecycleScope
Fragment는 백스택에 있을 때 onDestroyView()가 호출되지만 Fragment 자체는 살아있는 상태다. 따라서 Fragment에서 lifecycleScope를 쓰게 되는 경우 메모리 누수가 발생할 수 있다. 이때 사용하는 게 viewLifecycleOwner.lifecycleScope이며, onViewCreated(뷰가 생성완료 되었을 때)에서 launch한다.
1 | class TestFragment : Fragment() { |
3. ViewModel의 viewModelScope
- ViewModel이 clear될 때만 취소됨
Dispatchers.Main.immediate사용
1 | class TestViewModel : ViewModel() { |
4. 앱의 ProcessLifecycleOwner.get().lifecycleScope
- Application 레벨의 lifecycle을 따르며, 앱 프로세스가 종료될 때 취소된다.
- 앱 전체의 포그라운드/백그라운드 상태를 감지할 수 있다.
- 앱 레벨 데이터 동기화에 사용한다.
사용처
- Application을 상속받는 클래스 또는 위젯 관련 로직에서 사용한다.
[Android] LifecycleScope의 종류
https://dl137584.github.io/2026/01/10/031-lifecyclescope-classification/