ViewModel의 생성자에 있는 모든 의존성들을 Lazy Inject하라는 것은 아니지만, 드물게 사용하는 것들은 Lazy로 바꿈으로서 초기화 성능을 개선할 수 있다. 의존성이 실제로 필요할때만 주입되므로 이로인한 이점은 다음과 같다.
1. 빠른 시작
2. 더 낮은 메모리 점유율
3. CPU 부하 감소
Lazy Initialization을 사용해야하는 경우
- 규모가 큰 의존성
- 드물게 사용되는 의존성
- 조건부 의존성
케이스 스터디
@HiltViewModel
class BookViewModel @Inject constructor(
@IoDispatcher private val ioDispatcher: CoroutineDispatcher,
private val bookmarkUseCase: dagger.Lazy<BookmarkUsecase>,
북마크처럼 유저가 클릭할때만 사용되는 UseCase의 경우 생성을 미뤄둘 수 있다.
*이 글은 Mastering Android ViewModels에서 발췌해온 것입니다.
'프로그래밍 > Android' 카테고리의 다른 글
Android Room은 어떻게 Flow를 지원할 수 있었을까? (0) | 2024.09.14 |
---|---|
Mastering Android ViewModels: init {} 블록에서 상태를 초기화하는 것을 피하라 (0) | 2024.06.23 |
[안드로이드] MyMavenRepo로 Private Repository 라이브러리 무료 배포하기 (0) | 2024.04.24 |
Coil 인터셉터를 활용한 이미지 로딩 최적화 방법 (1) | 2024.01.28 |
[Hilt] Custom Component의 활용 - 지역별 DB 생성하기 (2) | 2024.01.01 |