[Android] ViewModel

민채·2024년 2월 15일
0

Android

목록 보기
4/16

ViewModel

  • Android Jetpack의 구성요소 중 하나
  • 소프트웨어 개발 디자인 패턴중 하나인 MVVM(Model — View — ViewModel) 디자인 패턴으로부터 파생된 단어
  • View로부터 독립적이며, View가 필요로 하는 데이터만 소유함
  • View에서 보여주는 데이터를 캡슐화하여 Lifecycle이 변화해도 데이터를 - Activity에서는 Activity가 완전히 종료될 때까지, 그리고 Fragment에서는 Fragment가 분리될 때까지 메모리에 남아있도록 설계 되어있음

장점

  • View의 데이터 상태 저장에 용이
  • Activity나 Fragment 같은 UI컨트롤러의 과도한 책임을 분담하여 클래스가 거대해지는 것을 방지
  • 유지보수, 재사용성 그리고 테스트가 용이함
  • ViewModel을 사용함으로써 View는 ViewModel에게 받은 데이터로 화면을 갱신하는 역할만을 하며 ViewModel은 View가 화면을 갱신하기 위한 데이터를 가공함

ViewModel Lifecycle

  • ViewModel의 LifeCycle은 ViewModelProvider에 전달되는 객체의 LifeCycle로 지정됨
  • Activity의 생명 주기 보다 긴 수명을 가지는 생명 주기를 가지고 있기 때문에 ViewModel을 사용하면 화면 전환시 데이터의 소멸을 방지할 수 있음
  • 생명 주기에 영향을 받지 않고 데이터를 유지할 수 있음
  • UI 컨트롤러와 데이터가 분리됨
  • Fragment 간의 데이터 공유가 쉬워짐

ViewModel은 범위로 지정된 ViewModelStoreOwner가 사라질 때까지 메모리에 남아 있음

ViewModelStoreOwner가 사라지는 경우

  • Activity가 종료될 때
  • Fragment가 분리될 때
  • navigation back stack에서 삭제될 때

ViewModel 사용법

이건 나보다 훨씬 정리를 잘 해놓은 블로그가 많이 때문에 이걸 참고하는 게 좋을 것 같다! (절대로 정리 하기 싫은 거 아님😂)

그리고 내가 이전에 공부하면서 ViewModel를 사용한 예제도 참고하면 좋다~! (추후에 올릴 LiveData, Paging에 관한 코드도 포함되어 있다)

참조

profile
코딩계의 떠오르는 태양☀️

0개의 댓글