안드로이드 앱 개발

안드로이드 ViewModel이란 무엇인가? 본문

카테고리 없음

안드로이드 ViewModel이란 무엇인가?

스텝바이스텝안드로이드 2021. 3. 16. 20:40

프래그먼트간의 데이터 전달,

액티비티와 프래그먼트간의 데이터 전달을 어떻게 해야할지 검색중에

 

VIewModel이라는 것을 알게되었다.

 

ViewModel이란 View로부터 독립적이며, View가 필요로 하는 데이터만을 소유하는 특징을 갖고있다.

 

정의 : 

Android Jepack의 구성요소 중 하나로, 본래 ViewModel이란 이름은 소프트웨어 개발 디자인 패턴중 하나인 MVVM(Model — View — ViewModel) 디자인 패턴으로부터 파생되었다.

MVVM의 관점에서 부르는 ViewModel과 Android Jetpack에 포함된 ViewModel 클래스를 구분하기 위해 흔히 Android Jetpack에 포함된 ViewModel을 Android Architecture ViewModel의 약자인 AAC ViewModel이라고 부르기도 한다.

 

어찌됐든 간에 생명주기를 보면

Activity가 끝날 finish될 때까지 데이터를 지니고 있을 수 있어서

한 액티비티 안에 있다면 ViewModel을 통해서 데이터 전달이 가능하다.

 

developers 문서 참조

developer.android.com/guide/fragments/communicate?hl=ko

 

프래그먼트와 통신  |  Android 개발자  |  Android Developers

프래그먼트를 재사용하려면 자체 레이아웃과 동작을 정의하는 완전히 독립된 구성요소로 각 프래그먼트를 빌드합니다. 이러한 재사용 가능한 프래그먼트를 정의한 후에는 활동 및 애플리케이

developer.android.com

 

** 추가 - 2021/07/14

ViewModel을 사용할 때, 프래그먼트의 UI 데이터를 보존하기 위해 Fragment 만의 ViewModel을 생성할 때가 있다.

이 때 ViewModel의 생명주기는 자연스럽게 Activity가 아닌 Fragment의 생명주기와 함께 하게 된다.

그러나, Activity에서 프래그먼트를 교체할 때(원래는 fragment와 뷰모델이 소멸되는게 맞지만) 트랜잭션을 백 스택에 추가한다면 해당 프래그먼트와 뷰모델은 소멸되지 않는다.)