피드로 돌아가기
Dev.toFrontend
원문 읽기
ViewModel Lifecycle 기반 Coroutine 자동 생명주기 관리 전략
ViewModel VS Coroutine Scope
AI 요약
Context
Android 환경에서 Coroutine 사용 시 ViewModel의 생명주기와 동기화되지 않은 작업으로 인한 메모리 누수 위험 존재. 수동으로 CoroutineScope를 생성하고 관리함에 따른 취소 누락 및 리소스 낭비 문제 발생.
Technical Solution
- ViewModel 소유의 전용 CoroutineScope인 viewModelScope 도입을 통한 생명주기 결합
- ViewModel clear 시점에 viewModelScope 자동 cancel을 수행하는 구조적 메커니즘 활용
- CoroutineScope를 Coroutine의 컨테이너로 정의하여 실행 위치와 생존 기간을 중앙 제어
- 수동 scope.cancel() 호출 과정을 자동화하여 휴먼 에러로 인한 Memory Leak 원천 차단
- Dispatchers.IO 등 적절한 Context 설정을 통한 메인 스레드 Non-blocking 보장
실천 포인트
- 비동기 작업 정의 시 해당 작업의 생존 범위가 ViewModel과 일치하는지 검토 - 수동 CoroutineScope 생성 시 반드시 대응하는 cancel() 호출 로직 포함 여부 확인 - Android ViewModel 내 모든 비동기 호출은 viewModelScope.launch() 사용을 원칙으로 적용