반응형
ViewModel 객체 삽입
viewModel에서는 새로운 Annotation 두가지를 사용합니다.
- `@HiltViewModel` : Hilt에게 해당 컴포넌트가 ViewModel 임을 알림
- `@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란 무엇인가
반응형
'어질어질 개발노트 > Android' 카테고리의 다른 글
[Android] 안드로이드 개발에서 Private 함수 테스트: 실전 팁과 예제 (0) | 2025.01.15 |
---|---|
[Android] Abstract Class vs Interface: 무엇을 선택해야 할까? (0) | 2025.01.14 |
[Android] 클린 아키텍처 (Clean Architecture): 소프트웨어 설계의 정수 (0) | 2025.01.11 |
[Android] Sealed Class와 Enum의 차이점과 적절한 사용법 - Kotlin 개발자를 위한 가이드 (0) | 2025.01.10 |
[Android] ListAdapter vs RecyclerViewAdapter: 무엇을 선택해야 할까? (0) | 2025.01.10 |
[Android] RxJava: flatMap vs switchMap - 차이를 명확히 이해하기 (0) | 2025.01.10 |
[Android] [Kotlin] Compose 기초 - 시작하기 (0) | 2024.08.27 |
[Android] Hilt 적용하기(1) - Hilt란 무엇인가 (1) | 2024.06.26 |