일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 코딩테스트
- 코틀린
- 회원가입
- DiffUtil
- Kotlin
- Authentication
- 알고리즘
- XML
- 클린아키텍처
- cleanarchitecture
- 플레이스토어
- 안드로이드
- Build variants
- ListAdapter
- UiState
- 컴포즈
- Jetpack
- 로그인
- MVVM
- Compose
- coroutine
- 커스텀뷰
- 파이어베이스
- 리사이클러뷰
- NavController
- NavHost
- 뷰
- Android
- sharedFlow
- Flow
- Today
- Total
목록생성자 (2)
Grusie 안드로이드 개발 기술 블로그
기존 HiltViewModel을 사용했을 때에는 생성자에 의존성이 선언 되어있는 useCase들을 넘겨주는 형태로 사용하였으나, 생성자를 넣어주고 싶어 찾아보다 Assisted Inject에 대해 발견하게 되어 기록해보려고 한다. 사용법1. @HiltViewModel을 사용하지 않는다.2. 뷰모델의 constructor 앞에 @Inject를 @AssistedInject로 대체한다.3. 생성자에 들어갈 파라미터 중 런타임 오브젝트를 주입받는 파라미터에는 @Assisted 애너테이션을 넣는다.4. 생성자를 주입한 뷰모델을 리턴하는 뷰모델 팩토리를 선언한다.5. 뷰에서 뷰모델 팩토리를 사용하여, 뷰모델을 생성한다. 직접 구현해보자class SlowMailBoxViewModel @AssistedInject co..
회사 프로젝트를 개발하던 중, RuntimeException이 계속 발생했었다. 프래그먼트를 생성하는 부분에서 에러가 발생한 것으로 로그가 보였으나, 테스트 할 때에는 에러가 발생하지 않아 당황했었다. 휴대폰 기종마다 다른 건가? 라고 생각하다가, 에러 양이 많아질수록 조급해져 찾아보다가 오픈채팅방에 질문을 통해 알게 되었다. 프래그먼트는 이런 저런 이유로 재생성이 자주 된다. 회사 프로젝트는 화면 회전을 막아뒀기에 다시 그려질 일이 없다고 생각하였으나, 다크모드로 변경하거나, 폰트 사이즈를 변경하는 등의 동작을 했을 때 화면을 새로 그리면서 RuntimeException이 발생하게 되었던 것이다. 이유로 발생한 이유는 Fragment생성 시에, 액티비티에서 생성자에 파라미터를 넘겨서 생성하였기 때문이라..