← 질문 목록
#18깊이 0

화면을 돌리면 데이터가 사라지는 이유는?

모바일기초

구성이 바뀌면 액티비티가 파괴되고 새로 만들어지기 때문이다. 기존 인스턴스가 들고 있던 값은 그 인스턴스와 함께 사라진다. 남기려면 무엇까지 견뎌야 하는지에 따라 세 층 중 하나를 고른다.

수단어디까지 견디나담기 좋은 것
ViewModel구성 변경까지. 프로세스 종료엔 사라진다목록, 진행 중인 작업
onSaveInstanceState프로세스 종료까지작고 직렬화 가능한 값
파일·DB앱을 지울 때까지오래 남겨야 하는 것

일부러 그렇게 설계했다. 가로와 세로는 레이아웃도, 이미지도, 때로는 문자열도 다른 리소스를 쓴다. 리소스를 다시 고르는 가장 확실한 방법이 처음부터 다시 만드는 것이다 — 언어 변경이나 다크 모드 전환도 같은 경로를 탄다.

셋을 가르는 축은 무엇을 견뎌야 하느냐다. 구성 변경만 견디면 되는 값은 ViewModel로 충분하다. 다만 시스템이 메모리를 회수하며 프로세스를 죽이면 ViewModel도 함께 사라진다. 그때까지 살아야 하는 값은 번들이나 저장소로 내려야 한다.

"ViewModel을 쓰면 된다"까지는 대부분 말한다. 프로세스 종료는 못 견딘다는 것과 그 자리를 SavedStateHandle이 메운다는 데까지 가면 한 단계 위다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

화면을 돌리면 데이터가 사라지는 이유는?