생명주기

Untitled

화면 모드가 바뀌면 기존 액티비티가 파괴되고 다시 onCreate가 된다.

재생성이 일어나게 되면 기존 가지고 있던 데이터가 사라진다.

예시

버튼을 눌러 +1 씩 올렸지만, 화면 재생성이 일어남과 동시에 기존 데이터가 사라졌다.

해결방법

구글에서는 이 휘발성 데이터를 어딘가에 보존했다가 다시 불러오게 하기 위하여 onSaveInstanceState를 만들었다. 이때 onSaveInstanceState를 사용하면 map 형식으로 Bundle의 데이터를 저장하고 onCreate에서 null체크 후 가져오면 된다.

문제는 onSaveInstanceState이 다루는 Bundle은 큰 크기의 데이터를 다루기 위한 것이 아니다.(50k제한)

따라서 ViewModel을 통해 이를 보완한다.

ViewModel이란?

Activity와는 독립된 생명주기를 가지고 있다‼️

초기값을 설정해주고 그 외 나머지 로직들을 관리해주는 Factory를 사용 (데이터가 보존될 수 있게 해줌)

위 주석에도 쓰여 있지만,