ViewModel 과 AndroidViewModel 차이

Jiyoon Chae·2023년 10월 24일
0

안드로이드

목록 보기
16/23

ViewModel과 AndroidViewModel은 Android 앱 개발에서 사용되는 두 가지 ViewModel 클래스입니다. 이 두 클래스 간의 주요 차이점은 다음과 같습니다:

🔹1. 베이스 클래스:

  • ViewModel: Android 아키텍처 컴포넌트 라이브러리의 일부로 androidx.lifecycle.ViewModel 패키지에서 제공됩니다. 이 ViewModel은 순수한 Android 애플리케이션 로직 및 UI와 무관한 데이터 관리를 목적으로 합니다.
  • AndroidViewModel: 또한 androidx.lifecycle.ViewModel 패키지에서 제공되지만 Android 컨텍스트와 관련된 작업을 수행하기 위해 Application 클래스를 포함한 Android 컴포넌트와 관련된 컨텍스트를 사용할 수 있습니다.

🔹2. 컨텍스트 제공:

  • ViewModel: ViewModel은 Android 컨텍스트를 직접 참조하지 않습니다. 따라서 Android 컨텍스트에 대한 직접적인 접근이 없으며, Android 프레임워크와 독립적으로 설계됩니다. 따라서 애플리케이션 컨텍스트 또는 Context 객체에 직접 액세스할 수 없습니다.
  • AndroidViewModel: AndroidViewModel은 Android 애플리케이션 컨텍스트를 가질 수 있으며, 이를 사용하여 리소스 액세스 또는 시스템 서비스 호출과 같은 Android 특정 작업을 수행할 수 있습니다. 이를 통해 Application 객체를 통한 애플리케이션 수준 초기화 및 데이터 공유도 용이해집니다.

🔹3.장소:

  • ViewModel: 일반적으로 Android ViewModel은 UI와 관련된 데이터를 처리하거나 화면 회전 및 액티비티 간의 데이터 공유와 같은 UI 라이프사이클 관련 문제를 처리하는 데 사용됩니다.
  • AndroidViewModel: AndroidViewModel은 UI 뿐만 아니라 Android 시스템 서비스 또는 Android 애플리케이션 수준의 데이터 관리와 같은 Android 특정 작업에도 사용됩니다.

🔹4.사용 사례:

  • ViewModel: 일반적인 UI 구성 요소의 데이터 관리 및 UI 상태 유지, 예를 들면 화면 회전 시 데이터 보존 및 화면 간 데이터 공유.
  • AndroidViewModel: Android 시스템 서비스에 액세스하거나, Android 애플리케이션 수준의 설정 관리 또는 데이터베이스 액세스와 같은 Android 특정 작업을 수행할 때 유용.

두 ViewModel 클래스는 앱 아키텍처의 일부로 사용되며, 앱의 필요에 따라 선택하게 됩니다. 기본적으로 ViewModel을 사용하는 것이 일반적이지만 Android 특정 작업을 수행해야 하는 경우 AndroidViewModel을 고려할 수 있습니다.

profile
바닐라라떼 좋아☕

0개의 댓글