피드로 돌아가기
Dev.toFrontend
원문 읽기
Process Death 대응을 위한 State Management 전략 최적화
Day 9/100: onSaveInstanceState vs ViewModel vs SavedStateHandle — Pick the Right Tool
AI 요약
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 전략이 존재하는가