본문 바로가기
어질어질 개발노트/Android

[Android] Hilt 적용하기(2) - ViewModel

by tia.mom 2024. 6. 27.
반응형

ViewModel 객체 삽입

viewModel에서는 새로운 Annotation 두가지를 사용합니다.

  1. `@HiltViewModel` : Hilt에게 해당 컴포넌트가 ViewModel 임을 알림
  2. `@Inject` : 해당 컴포넌트를 생성하는데 어떤 다른 종속성이 필요한지 알려줍니다.

아래와 같이 Hilt를 이용하여 ViewModel을 만들면 커스텀 ViewModelFactory를 만들지 않고 ViewModel을 사용할 수 있습니다.

@HiltViewModel
class ExampleViewModel @Inject constructor(
  private val savedStateHandle: SavedStateHandle,
  private val repository: ExampleRepository
) : ViewModel() {
  ...
}

@ViewModelScoped

모든 Hilt ViewModel은 `ViewModel`과 동일한 수명 주기를 따르는 `ViewModelComponent`에서 제공되며, 따라서 구성 변경 후에도 유지될 수 있습니다. 종속 항목의 범위를 `ViewModel`로 지정하려면 `@ViewModelScoped` Annotation을 사용합니다.

 

`@ViewModelScoped` 타입을 사용하면 `ViewModel`에 삽입된 모든 종속 항목에 걸쳐 범위가 지정된 유형의 단일 인스턴스가 제공됩니다. 범위가 지정된 인스턴스를 요청하는 ViewModel의 다른 인스턴스는 다른 인스턴스를 수신합니다.

 

단일 인스턴스를 다양한 ViewModel에서 공유해야 하는 경우, `@ActivityRetainedScoped` 또는 `@Singleton`을 사용하여 범위를 지정해야 합니다.

 

 

2024.06.26 - [어질어질 개발노트/Android] - [Android] Hilt 적용하기(1) - Hilt란 무엇인가

 

반응형