피드로 돌아가기
Day 9/100: onSaveInstanceState vs ViewModel vs SavedStateHandle — Pick the Right Tool
Dev.toDev.to
Frontend

Process Death 대응을 위한 State Management 전략 최적화

Day 9/100: onSaveInstanceState vs ViewModel vs SavedStateHandle — Pick the Right Tool

Hoang Son2026년 4월 20일12intermediate

Context

Android 환경의 Configuration Change와 System Process Death로 인한 데이터 소실 문제 발생. ViewModel만으로는 메모리 상의 상태만 유지 가능하여 OS에 의한 프로세스 강제 종료 시 데이터 복구가 불가능한 한계 존재.

Technical Solution

  • Lightweight UI 상태 보존을 위한 onSaveInstanceState의 Bundle 기반 직렬화 적용
  • Configuration Change 시 객체 생존 주기 연장을 위한 ViewModelStore 기반의 ViewModel 설계
  • Process Death 생존과 ViewModel의 Reactive API 통합을 위한 SavedStateHandle 도입
  • IPC Transaction 제한(약 1MB)을 고려한 데이터 분리 전략 수립 및 대형 객체 저장 배제
  • Navigation BackStackEntry의 SavedStateHandle을 활용한 Fragment 간 Type-safe 결과 전달 체계 구축
  • SavedStateHandle의 getStateFlow를 통한 선언적 상태 관리 및 파생 상태 최적화

- UI 상태(스크롤 위치, 입력 값)는 SavedStateHandle 또는 onSaveInstanceState에 저장했는가 - 비즈니스 로직 결과물 및 대용량 데이터셋을 Bundle에 직접 저장하여 TransactionTooLargeException 위험을 초래하지 않았는가 - 모든 상태 보존 대상 View에 고정된 XML ID를 부여하여 Auto-save 메커니즘을 활성화했는가 - Process Death 이후 복구 시나리오에서 ViewModel의 초기 상태가 비어있을 경우의 Fallback 전략이 존재하는가

원문 읽기