일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코틀린
- View
- Behavior
- onLayout
- lifecycle
- LiveData
- CoordinatorLayout
- DataBinding
- AppBarLayout
- Android
- 알고리즘
- Navigation
- 안드로이드
- CollapsingToolbarLayout
- room
- notification
- BOJ
- CustomView
- sqlite
- activity
- 백준
- ViewModel
- recyclerview
- HTTP
- Algorithm
- 알림
- hilt
- onMeasure
- Coroutine
- kotlin
- Today
- Total
목록hilt (5)
개발일지
Android에서 Jetpack Navigation Component를 사용할 때 Global Action을 RecyclerView ViewHolder에서 바로 findNavController를 사용하는 경우 종종 does not have a NavController set Exception이 발생한다. * Dialog에서 RecyclerView를 사용하는 경우 자주 발생한다. itemView.findNavController() 위에 문제를 발생하는 코드를 아래로 고치자. Navigation.findNavController(activity, R.id.nav_host) Hilt를 사용하여 DI 패턴을 적용하면 RecyclerViewAdapter에서 Activity나 Fragment를 쉽게 가져올 수 있다.
Hilt Entry Point Entry Point는 Hilt가 Inject하는 진입점이다. Activity, Fragment 같이 Android Framework에 의해 제공되는 Component들은 @AndroidEntryPoint를 통해 진입점을 지정할 수 있고, 일반 객체들도 @Inject constructor를 정의하여 진입점을 만들어 Inject할 수 있다. 하지만 Hilt가 지원하지 않는 Class에 Inject할 경우가 존재하고 이를 해결하기 위해 EntryPoint를 설정해야한다. class DeleteToDoSnackbar( private val view: View, private val todo: ToDo ) { private val entryPoint by lazy { EntryPo..
Hilt Component 삽입을 실행할 때 @InstallIn 주석을 사용하여 참조할 수 있는 구성요소를 설정하고 구성요소에 맞는 대상에서만 삽입할 수 있다. Hilt Component 인젝터 대상 ApplicationComponent Application ActivityRetainedComponent ViewModel ActivityComponent Activity FragmentComponent Fragment ViewComponent View ViewWithFragmentComponent @WithFragmentBindings 주석이 지정된 View ServiceComponent Service Hilt Component Lifetimes Hilt는 Hilt Component별 Android Cla..
Hilt Module 생성자를 사용할 수 없는 Class를 주입해야 하는 경우 @Inject 생성자를 정의할 수 없습니다. (Interface, Builder를 통해 생성되는 Class, 외부 라이브러리 클래스 등) => Hilt Module을 통해 Class를 어떻게 얻는지 정의하여 의존성을 주입할 수 있습니다. @Module, @Installin @Module로 지정된 Class는 Hilt에게 인스턴스를 제공하는 방법을 알려줍니다. @Module로 지정된 Class는 @Installin을 지정하여 각 모듈이 어떤 Scope에서 사용되는지 알려야 합니다. @Provides 외부 라이브러리에서 제공되거나 Builder 패턴으로 제공되는 경우 @Provides를 통해 인스턴스를 제공하는 방법을 알려줄 수 ..
Hilt 기존의 Dagger2를 Android의 구조적으로 맞게 기능을 추가한 라이브러리이다. DI를 도와주며 Annotaion을 통해 보일러 플레이트 코드를 제거하고 쉽게 사용할 수 있다. DI (Dependency Injection) Android뿐만 아니라 프로그래밍에서 널리 사용되는 기법이고 다양한 이점이 있다. 코드의 재사용성 리팩토링 용이성 테스트 용이성 클래스에서 다른 클래스를 참조하는 방법은 크게 3가지가 있습니다. (Car와 Engine을 예시로) 1. 클래스에서 필요한 종속 클래스를 인스턴스화하는 방법 class Car { private val engine = Engine() fun start() { engine.start() } } fun main(args: Array) { val c..