Model- View - ViewModel 패턴에서 View와 Model 사이에서 데이터를 관리해주고 바인딩해주는 역할.
lifecycle을 고려하여 데이터를 저장하고 관리하도록 설계된 클래스.
MVVM에 관한 내용은 언급되어있지 않음.
이를 이용하면 기존의 Activity가 생명주기때문에 데이터 관리 면에서 겪던 어려움을 처리해준다.
-> Device Rotation 같은 라이프사이클 관련 문제를 해결해줌.
화면 회전을 하면서 OnDestroy->onCreate를 다시 타지만 viewModelScope가 살아있는 것을 볼 수 있다.
ViewModel 은 개념. JetPack에서 제공하는 AAC ViewModel은 생명주기(ex.화면 회전)에 따른 데이터처리 문제를 더 편리하게 제공해주기 위한 클래스일 뿐, MVVM과는 직접적인 관련이 없다.
-> 메모리 부족에 따라 프로세스가 종료되는 경우 ViewModel이 살아있지 못하므로 savedInstanceState 를 적절하게 섞어서 사용해주는것이 좋다! 또, savedInstanceState는 디스크에서 직렬화/역직렬화 하는 과정이 필요하므로 느림 -> 단순하고 작은 객체만 여기서 처리하길!
Manifest의 ConfigChanges 설정.
<activity
android:name=".MainActivity"
android:configChanges="orientation|screenSize"/>
이렇게 설정한 값들에 대해서는 onDestroy() -> onCreate() 가 아니라 onConfigurationChanged()가 호출된다. 이 함수를 오버라이드 하여 원하는 결과를 얻어보자~