profile image

L o a d i n g . . .

반응형

치명적인 (view)model

너무 유명하지만 어려운 뷰모델(Viewmodel)

안드로이드 개발을 하면서 분명히 알고 있어야 하는 MVVP패턴의 뷰모델(ViewModel) 하지만 이론은 너무 어렵고 면접에서 질문이 들어온다면 이를 설명하기는 또 어렵다. 그래서 개인적으로 이정도만 알고 있으면 되지 않을까 싶어서 기록을 해본다. 그래도 사용법정도는 알고 있어야 한다

다른 생명주기를 가지고 있다

Activity나 Fragment는 각각의 생명주기를 가지고 있고, 심지어 프레그먼트는 더 세분화된 생명주기를 가지고 있다. 하지만 뷰모델은 이 생명주기와는 다르게 더 간단하면서 더 오래 살아남고 있다. 그래서 이와는 다른 생명주기를 가지고 있다.  뷰가 완전히 죽은 시점(onDestory)에서 뷰모델도 onClear가 호출되기 때문에 생명주기가 더 길다.

이건 또 무슨소리냐..라면 엑티비티가 다른화면을 다녀와도 뷰모델은 이동된 시점 그대로 데이터를 가지고 있다는 것이다.

이는 LiveData와 합쳐지면 더 많은 시너지를 발생시킨다.

생명주기에 영향을 받지 않고 데이터를 유지할 수 있다.

위와 같은 이유인데, 화면을 돌리거나 다른 화면을 들렸다가 돌아와도 데이터가 유지가 된다.

이는 saveinstance를 이용하지 않아도 되므로 아주 간편하고 좋다! 다시 한번 말하지만 LiveData와 함께 쓰면 더더욱 시너지 효과가 생긴다.

프레그먼트간의 데이터 공유가 쉬워진다.

프레그먼트간의 데이터는 화면 이동시 같이 데이터를 넘겨주어야 하는데 viewmodel을 사용할 경우 같은 viewmodel로 묶게 된다면 위와 같은 이유로 프레그먼트간의 데이터 공유가 쉽다.

(사실 이게 맞나 ...?)ㅎㅎㅎㅎ

 

++

뷰모델에서는 되도록이면 context나 applicationContext나 view를 받아서 처리하는 방법은 추천하지 않는다.

이는 메모리릭과 관련된 사항으로 유지보수중에서 조심히 다뤄야 할 것으로 생각이 든다.

괜히 손댔다가 일이 커질 수 있으므로..

반응형
복사했습니다!