일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- F
- r
- Observer Pattern
- ㅋㅁ
- El
- Kotlin
- ㅓ
- Singleton
- factory method
- PrototypePattern
- 함수형프로그래밍
- builderPattern
- 디자인패턴 #
- Functional Programming
- 싱글톤
- designPattern
- a
- 추상팩토리패턴
- Design Pattern
- 디자인패턴
- 옵저버 패턴
- 프로토타입 패턴
- 팩토리 메소드
- 추상 팩토리
- 코틀린
- 빌터패턴
- Abstract Factory
- Today
- Total
오늘도 더 나은 코드를 작성하였습니까?
Android Code Lab(Hilt) 정리2 본문
각각의 SubComponent를 Hilt로 이전한다.
LoginComponent 이전하기.
LoginComponent를 직접 만들어 LoginActivity에서 사용하는 대신 Hilt에서 자동으로 처리한다.
Hilt가 LoginActivity의 Component를 생성하고 삽입하려면 Activity에 @AndroidEntryPoint 주석을 추가
@AndroidEntryPoint
class LoginActivity : AppCompatActivity() {
//...
}
LoginActivity를 Hilt로 이전하기 위해 @AndroidEntryPoint만 추가하면 됩니다.
Hilt가 기존의 Dagger Component에 접근하는 코드를 자동으로 생성한다.
LoginEntryPoint Interface와 EntryPoint를 통해 Component에 접근하는 로직을 삭제한다.
더이상 사용하지 않는 LoginComponent를 삭제합니다.
AppSubcomponent.kt
@InstallIn(ApplicationComponent::class)
@Module(
subcomponents = [
RegistrationComponent::class,
UserComponent::class
]
)
class AppSubcomponents
RegistrationComponent 이전하기.
RegistrationActivity.kt
//Remove
//@InstallIn(ApplicationComponent::class)
//@EntryPoint
//interface RegistrationEntryPoint {
// fun registrationComponent(): RegistrationComponent.Factory
//}
override fun onCreate(savedInstanceState: Bundle?) {
//Remove
//val entryPoint = EntryPoints.get(applicationContext, RegistrationEntryPoint::class.java)
//registrationComponent = entryPoint.registrationComponent().create()
registrationComponent.inject(this)
super.onCreate(savedInstanceState)
//..
}
// Remove
// lateinit var registrationComponent: RegistrationComponent
override fun onCreate(savedInstanceState: Bundle?) {
//Remove
//registrationComponent.inject(this)
super.onCreate(savedInstanceState)
//..
}
RegistrationActivity에서 한 것과 비슷하게 EnterDetailsFragment에 @AndroidEntryPoint 주석을 추가하고,
onAttach 함수(기존에 Fragment에서 Dagger의 Component에 접근하던 위치)를 제거한다.
AppSubcomponent.kt
@InstallIn(SingletonComponent::class)
@Module(
subcomponents = [
UserComponent::class
]
)
@DisableInstallInCheck
class AppSubcomponents
Registration는 자체 범위 ActivityScope를 선언하고 사용합니다.
Scope는 종속 항목의 LifeCycle를 제어합니다.
ActivityScope가 Dagger에 RegistrationActivity로 시작-종료 내에서 동일한 RegistrationViewModel 인스턴스를 주입 받는다.
Hilt는 이를 지원할 수 있도록 기본 제공되는 LifeCycle Scope 를 제공합니다.
@ActivityScope 주석을 Hilt에서 기본제공하는 @ActivityScoped로 변경.
하고 @ActivityScope class를 삭제한다.
'DI > Hilt' 카테고리의 다른 글
Android Code Lab(Hilt) 정리3 (0) | 2021.12.23 |
---|---|
Android Code Lab(Hilt) 정리1 (0) | 2021.12.23 |
Hilt을 사용한 종속성 주입 (0) | 2021.05.06 |