EnjoyLife

viewModelScope 와 lifecycleScope 은 각각 어떻게 구별해서 쓸까? 본문

안드로이드 개발/개발팁

viewModelScope 와 lifecycleScope 은 각각 어떻게 구별해서 쓸까?

Aiden96 2025. 5. 6. 15:49

 viewModelScope를 사용하는 상황 (📦 데이터 중심, 오래 살아야 함)

예시이유
 타이머 기능 화면 회전해도 계속 돌아야 하니까
 API 데이터 요청 후 LiveData로 저장 화면이 없어져도 데이터는 살아 있어야 하니까
 검색어를 입력하면 자동 추천어 받아오기 ViewModel이 처리하고, 결과만 View에 넘김
 앱 실행 시 초기 데이터 로드 (캐시, 설정 등) 화면보다 오래 살아야 함
 파일 다운로드 중 상태 유지 화면이 닫혀도 계속 다운로드돼야 함
 

👉 특징: UI에 직접 영향을 안 주고, 상태 관리나 데이터 처리에 집중된 작업


 lifecycleScope를 사용하는 상황 (🎨 UI 중심, 화면에 종속)

예시이유
 토스트 보여주기 화면이 사라졌는데 토스트 뜨면 앱 죽음 😨
 다이얼로그 띄우기/닫기 화면과 같이 사라져야 함
 버튼 클릭 시 잠깐 애니메이션 보여주기 UI 생명주기와 1:1로 연결됨
 Fragment 화면 진입 시 자동 안내 메시지 띄우기 화면 나가면 메시지 안 나와야 함
 Navigation 이동 (예: 다음 화면으로 이동) 이미 화면이 사라졌는데 이동하면 오류 발생 가능
 

👉 특징: UI에 직접 영향을 주는 일은 화면 생명주기랑 같이 움직여야 안전함

 

🎯 초간단 요약

기능쓸 스코프
데이터 저장/요청/처리 viewModelScope
UI 표시/애니메이션/토스트/다이얼로그 lifecycleScope

 

🧠 기억 공식

🧠 "이 작업이 화면이 사라져도 계속 돼야 하나?" → YES → viewModelScope
🧠 "이 작업이 화면이 사라지면 멈춰야 하나?" → YES → lifecycleScope