프로그래밍/Android

Mastring Android ViewModels: 필요하다면, 생성자에 의존성을 Lazy하게 주입하라

Lou Park 2024. 6. 23. 11:27

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에서 발췌해온 것입니다.