본문 바로가기
개인공부/android

UI 상태 저장

by 왕큰새 2021. 12. 27.
728x90

Activity가 시작 될 때, 종료될 때 Activity의 UI 상태를 보존하고 복원하는 것은 사용자 경험의 중요한 부분이다.

 

사용자는 UI 상태가 유지되길 기대하지만, 시스템은 Activity 및 UI 상태를 폐기한다.

 

사용자의 기대치와 시스템 동작 간극을 메우려면,

 

ViewModel 객체, onSaveInstanceState() 메서드, 로컬 저장소를 조합하여 UI 상태를 유지해야 한다.

 

사용자가 UI 상태(Activity)를 종료하는 5가지 경우

1. 뒤로 버튼 누르기

 

2. 최근 사용 화면에서 활동 스와이프

 

3. Acitivty에서 상위 항목으로 이동

 

4. 설정 화면에서 앱 종료

 

5. App 작업 완료( Activity.finish() )

 

이 5가지 경우, Activity 인스턴스 내부에 저장된 State(상태), 저장된 인스턴스 기록과 함께 메모리에서 삭제된다.

 

UI 상태를 유지하기 위한 옵션

 

  ViewModel Saved instance state Persistent storage
(영구 저장소)
저장소 위치 매모리 내  디스크에 직렬화 디스크 또는 내트워크 내
구성 변경 시에도 유지
시스템에서 시작된 프로세스 중단 시에도 유지 아니요
사용자가 Activity 종료 / 
onFinish() 시에도 유지
아니요 아니요
데이터 제한 복잡한 객체도 괜찮지만
사용 가능한 메모리에 의해
공간 제한
원시 유형 및 문자열과 같은 단순하고 작은 객체만 해당 디스크 공간 또는 네트워크 리소스에서 검색하는 비용/시간에 의해서만 제한
읽기/쓰기 시간 빠름(메모리 액세스만) 느림(직렬화/역직렬화 및
디스크 액세스 필요)
느림(디스크 액세스 또는 네트워크 트랜잭션 필요)