일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Build variants
- Compose
- Authentication
- Flow
- 커스텀뷰
- 컴포즈
- cleanarchitecture
- 코틀린
- MVVM
- UiState
- Android
- 로그인
- NavHost
- 안드로이드
- NavController
- 코딩테스트
- sharedFlow
- 파이어베이스
- 회원가입
- 뷰
- Jetpack
- ListAdapter
- coroutine
- DiffUtil
- Kotlin
- 리사이클러뷰
- 클린아키텍처
- 플레이스토어
- 알고리즘
- XML
- Today
- Total
목록Hilt (2)
Grusie 안드로이드 개발 기술 블로그
기존 HiltViewModel을 사용했을 때에는 생성자에 의존성이 선언 되어있는 useCase들을 넘겨주는 형태로 사용하였으나, 생성자를 넣어주고 싶어 찾아보다 Assisted Inject에 대해 발견하게 되어 기록해보려고 한다. 사용법1. @HiltViewModel을 사용하지 않는다.2. 뷰모델의 constructor 앞에 @Inject를 @AssistedInject로 대체한다.3. 생성자에 들어갈 파라미터 중 런타임 오브젝트를 주입받는 파라미터에는 @Assisted 애너테이션을 넣는다.4. 생성자를 주입한 뷰모델을 리턴하는 뷰모델 팩토리를 선언한다.5. 뷰에서 뷰모델 팩토리를 사용하여, 뷰모델을 생성한다. 직접 구현해보자class SlowMailBoxViewModel @AssistedInject co..
늘 Coroutine을 사용하여 suspend함수로 레트로핏의 결과를 반환해주고, try-catch {}로 묶어서 에러 핸들링을 하였다.그러던 와중 CallAdapter라는 클래스를 알게 되어서 적어보려고 한다.Retrofit2 빌더 패턴에서, 확장함수를 보다보면, addCallAdapterFactory() 라는 메서드가 존재한다.응답을 받았을 때, callAdapterFactory에서 원하는 타입으로 리턴해주는 형태로 작업을 하기에, 코틀린의 Result를 사용하거나 임의로 만든 sealed class를 사용할 수 있을 것 같다.CallAdapter를 사용했을 경우 통신에 대한 try-catch{} 지옥을 겪을 일이 없어 코드가 깔끔해진다. 사용법CallAdapterclass CustomCallAdap..