뷰모델 생명주기.
액티비티가 시작하고 종료될 때까지 여러 생명주기 메서드가 호출되는데 뷰모델은 계속해서 같은 상태인 걸 볼 수 있다.
-> 액티비티가 재생성되면 액티비티가 갖고 있던 데이터는 사라진다.
-> 기존엔 onSaveInstanceState() 콜백을 쓰면 이런 예외적 상황에서 저장하고 싶은 데이터를 Bundle에 저장할 수 있었다.
-> 하지만 이 방법은 번들을 쓰기 때문에 저장하려는 데이터의 형태도 제한되고 대량의 데이터를 저장하기엔 제한이 있다. 번들 사용에 대해 가이드하고 있는 공식 문서에선 50KB 미만으로 유지하라고 말한다. 또한 이 방법에서 onSaveInstanceState()는 메인 쓰레드에서 동작해야 하기 때문에, 여기서 데이터를 저장하는 데 시간을 많이 쓰게 되면 그만큼 UI가 버벅거리게 된다.
-> 뷰모델은 액티비티가 재생성될 경우, onDestroy()가 호출되더라도 소멸되지 않는다. 뷰모델은 액티비티 안에서 finish()를 직접 호출하거나 사용자가 액티비티를 닫을 때 소멸된다.
참고 : https://onlyfor-me-blog.tistory.com/381,
https://jeongmin.github.io/2020/05/04/android/architecture-components/viewmodel/