화면 모드가 바뀌면 기존 액티비티가 파괴되고 다시 onCreate
가 된다.
재생성이 일어나게 되면 기존 가지고 있던 데이터가 사라진다.
버튼을 눌러 +1 씩 올렸지만, 화면 재생성이 일어남과 동시에 기존 데이터가 사라졌다.
구글에서는 이 휘발성 데이터를 어딘가에 보존했다가 다시 불러오게 하기 위하여 onSaveInstanceState
를 만들었다. 이때 onSaveInstanceState
를 사용하면 map
형식으로 Bundle
의 데이터를 저장하고 onCreate
에서 null
체크 후 가져오면 된다.
문제는 onSaveInstanceState
이 다루는 Bundle
은 큰 크기의 데이터를 다루기 위한 것이 아니다.(50k제한)
따라서 ViewModel을 통해 이를 보완한다.
Activity와는 독립된 생명주기를 가지고 있다‼️
초기값을 설정해주고 그 외 나머지 로직들을 관리해주는 Factory
를 사용 (데이터가 보존될 수 있게 해줌)
위 주석에도 쓰여 있지만,