ViewModel 은 configuration change (회전) 살아남음. 그러나 process death (시스템 메모리 부족 → 앱 죽임) 에는 살아남지 못함. 둘 다 보존하려면 SavedStateHandle.
📖 핵심 개념
ViewModel.onCleared(): user 가 진짜 화면 닫음.
Configuration change: 회전, 다크모드, 언어 — ViewModel 살아남음.
Process death: 메모리 부족 시 OS 가 앱 process kill — ViewModel 도 사라짐. 사용자가 돌아오면 새 ViewModel.
SavedStateHandle: Bundle 에 자동 저장 + 복원.
💻 코드 패턴
기본 — SavedStateHandle 주입
classSearchViewModel@AssistedInjectconstructor(@AssistedprivatevalsavedState:SavedStateHandle,privatevalrepo:SearchRepository,):ViewModel(){// 자동 저장/복원
valquery:StateFlow<String>=savedState.getStateFlow("query","")funsetQuery(s:String){savedState["query"]=s}valresults:StateFlow<List<Item>>=query.debounce(300).flatMapLatest{repo.search(it)}.stateIn(viewModelScope,SharingStarted.WhileSubscribed(5000),emptyList())}