뷰모델은 activity나 fragment에 사용되는 데이터들을 관리하는 클래스이다. 또한 activity와 fragment의 상호작용을 다룬다.

그러므로 뷰모델과 연결된 activity와 fragment는 뷰모델의 변화를 확인 할 수 있어야 한다. 뷰모델은 LIVEDATA나 DATABINDING을 통해서 정보를 노출시킨다.

뷰모델은 이러한 UI의 데이터에 대해서만 관여할 뿐 절대로 뷰 계층에 접근해선 안되며 ACTIVITY나 FRAGMENT를 참조하는것은 안된다.(?)

뷰모델은 뷰모델의 사용 인스턴스가 바뀌더라도 다시 연결되는 것으로 파괴 되지 않는다고 한다.

https://www.youtube.com/watch?v=5qlIPTDE274&t=30s&hl=ko

위의 뷰모델 설명영상이 너무 좋은거 같음.,.. 대충 요약해 보자면

1.뷰모델을 사용하는 이유?

위의 과정에서 이벤트에 의해서 activity가 recreate가 될때 정확하게 데이타를 저장하고 복구하지 않는다면 자료의 손실이 일어나게 된다.

이러한 오류를 막기위해

1)데이터 관리와 스크린을 표현하는 책임을 가지는 엑티비티 -> 데이터를 받아들이고 표현을 하는 형태로 엑티비티의 역할을 축소시킨다.

2)ViewModel : UI data 를 관리

.... 여기서 viewmodel의 역할이 커지는 것을 막기 위해 더 다양한 class를 구현해서 역할을 덜어줄수 있다는거 같다... 자세히는 모르겠다.

리워크