Kotlin(12)
-
[Kotlin Side Project] Hilt 적용
Hilt는 Dagger2 보다 학습곡선이 낮고, Android에서 DI를 위한 Boilerplate 코드를 annotation 적용만으로 없앤 라이브러리이다.(Dagger를 기반으로 Google에서 2020년 6월 안드로이드 전용으로 Hilt를 발표했다.) 별도의 컴포넌트를 생성하지 않고, Application 상속 클래스에 @HiltAndroidApp annotation을 통해 최상단 컴포넌트인 SigletonComponent(구 ApplicationComponent)를 생성해준다. @HiltAndroidApp class App : Application() { } 기존에 App에서 Context를 제공하던 방식이나 Dagger를 통해 @Component.Factory에서 App을 넘겨 직접 Contex..
2022.03.21 -
[Kotlin Side Project] Dagger2 적용
Android에 Dagger를 적용하기 위해서 DaggerApplication, DaggerActivity를 상속하는 방법을 쓴다. 코드를 분석해보면서 알았지만, DaggerApplication은 androidInjector.inject(this)를 구현해놓았고, 여기서 androidInjector를 얻기 위해서는 AppComponent가 AndroidInjector을 상속받는 형태여야한다. class App : DaggerApplication() { override fun applicationInjector(): AndroidInjector = DaggerAppComponent.factory().create(this@App) } @Singleton @Component( modules = [ Androi..
2022.03.21 -
[Kotlin Side Project] Paging3 적용(Offline-first)
DB+Network로 단일 저장소로 구현하기 위해 RemoteMediator를 사용 RemoteMediator의 구현 방법에 따라 item-keyed, page-keyed로 나뉠 수 있음. RemoteMediator는 키를 관리할 수 있는 별도의 기능을 제공하지 않으므로, db와 network간 싱크를 맞추기 위해 별도로 key를 저장하는 형태가 되어야한다. RemoteMediator 작동 방식 Pager는 UI에서 새로운 데이터가 필요할 경우, PagingSource의 load()를 호출해 PagingData라는 스트림을 생성(viewModel에 캐싱했었음) RemoteMediator를 사용할 때도 마찬가지로 PagingSource의 데이터 스트림을 생성하게끔 호출하지만, PagingSource의 데이..
2022.03.04 -
[Kotlin Side Project] Clean Architecture 구현
CA를 적용한 프로젝트 구조를 생성 entity : 가장 안쪽의 레이어로, 프레임워크의 제약을 받지 않는 plain object로 구성 domain : 비지니스 로직을 처리하는 레이어 data : 데이터를 처리하는 레이어 presentation : UI를 처리하는 레이어 CA 적용은 presentation, data -> domain -> data 방향으로만 의존성이 성립이 되므로, 내부 레이어는 외부 레이어에 대해 알 필요가 없다.(알아서는 안된다.) data -> domain 에서는 이를 구현하기 위해 domain 영역에 repository의 interface를 생성해 DI(의존성 주입)을 통한 의존성 역전을 필요로 한다. presentation -> domain 시, presentation은 dom..
2022.03.04 -
[Kotlin Side Project] 구현 목표
Kotlin Language 학습 Clean Architecture 적용 Room 사용법 익히기(Local Caching) Paging3 적용(Offline-first을 위한 단일저장소 구현) Coroutine 적용 Dagger 적용
2022.03.04 -
by
Delegate Pattern을 구현할 때 생기는 보일러 플레이트(Wrapper 생성)를 대신 제공 참고> https://velog.io/@haero_kim/Kotlin-by-%ED%82%A4%EC%9B%8C%EB%93%9C%EC%9D%98-%EC%97%AD%ED%95%A0-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0 [Kotlin] by 키워드의 역할 알아보기 Delegate Pattern 을 쉽게 구현해주는 by 키워드 velog.io
2022.02.24