ViewModel 클래스는 생명주기를 인식하며, UI와 관련된 데이터를 저장하고 관리합니다. ViewModel 클래스는 화면이 회전되어 액티비티가 재생성되는 것과 같은 상황에서도 살아남아 데이터를 보존합니다.
위의 그림은 액티비티가 회전하고 종료하기까지의 lifecycle 을 나타내고, 액티비티와 연관된 ViewModel의 lifecycle 도 오른쪽에 나타냈습니다. viewModel 은 액티비티가 종료되고 파괴될 때까지 최초에 생성된 viewModel 인스턴스가 유지됩니다.
activity scope 로 생성한 ViewModel 은 프래그먼트 사이에서 데이터를 공유하고 상호작용할 수 있습니다. 프래그먼트 내에서 뷰 모델을 생성하는데 사용한 액티비티를 얻고, 이를 사용하여 ViewModelProviders 로부터 공통된 ViewModel 인스턴스를 얻을 수 있습니다.
이러한 방식의 장점은 다음과 같습니다.