hilt 7

[Android] Clean Architecture With Pokedex (feat. Jetpack Compose, Hilt) - 4

이번 포스팅은 Presentation 레이어를 구현한다. 즉, presentation 모듈을 구현하게 된다. presentation 레이어는 앱의 UI, UI에 보여줄 데이터를 획득하는 기능을 담당한다. UI를 그리기 위해 Compose를 활용할 것이며, UI의 데이터, 즉 상태를 관리하는 기능은 ViewModel을 활용할 것이다. 먼저 포켓몬 리스트 데이터를 담당하는 ViewModel을 구현해보자. @HiltViewModel class PokemonListViewModel @Inject constructor( getPokemonListUseCase: GetPokemonListUseCase ) : ViewModel() { val pokemonList = getPokemonListUseCase .invok..

개발/Android 2023.01.01

[Android] Clean Architecture With Pokedex (feat. Jetpack Compose, Hilt) - 3

이번 포스팅은 Domain 레이어와 Presentation 레이어를 연결해주는 Data 레이어를 구현한다. 즉, data 모듈을 구현하게 된다. 실제 앱을 구현할 때, 데이터를 획득하는 방법은 크게 두 가지이다. Rest api등과 같은 Remote 데이터, 로컬 데이터베이스와 같은 Local 데이터다. 이 예제에서는 Remote 데이터만을 다룰 것이다. data모듈은 Domain 레이어의 Repository interface를 구현하게 된다. 구현 과정에서 API를 호출하여 네트워크 데이터를 획득하고 Domain 레이어의 Entity로 변환하는 작업이 필요하다. 우선 Retrofit을 활용하여 API 부터 구현한다. interface PokemonApi { @GET("pokemon") suspend f..

개발/Android 2022.07.10

[Android] Clean Architecture With Pokedex (feat. Jetpack Compose, Hilt) - 2

이번 포스팅은 Clean architecture의 가장 안쪽 레이어인 Domain 레이어를 구현할 것이다. 즉, 이전 포스팅에서 생성한 domain 모듈을 구현한다. 먼저 entity를 구현해보도록 하겠다. 포켓몬 도감은 포켓몬들을 리스트업하고 상세한 내용을 볼 수 있는 기능을 갖는다. 따라서 포켓몬 리스트를 구성할 Entity와 포켓몬 상세를 표현할 Entity가 필요하다. 아래와 같은 Entity 코드를 작성한다. data class PokemonEntity( val id: Int, val name: String, val imageUrl: String ) data class PokemonDetailEntity( val id: Int, val name: String, val imageUrl: Strin..

개발/Android 2022.07.09

[Android] Jetpack Compose + Flow로 네트워크 연결 상태 처리를 해보자.

저는 안드로이드 관련된 Medium 포스팅을 메일로 전달받고 있습니다. 최근 제목과 같이 Jetpack Compose와 Flow를 활용하여 네트워크 연결 상태 처리를 하는 포스팅을 보고 예제를 간단하게 작성하여 포스팅하려 합니다. 참고한 Medium 링크는 아래와 같으니, 원문을 보고 싶다면 참고하면 됩니다. https://attilaakinci.medium.com/network-connectivity-on-compose-a35f6efa1a5c Network Connectivity on Jetpack Compose Brief story on network connectivity usages on modern android development style with jetpack compose support..

개발/Android 2021.12.26

[Android] Dependency Injection (a.k.a DI) - 3. 기반코드를 Koin으로 리팩토링 해보자!

자, 이전 포스팅에서 작성한 Koin으로 리팩토링 해보자. github.com/InsertKoinIO/koin InsertKoinIO/koin Koin - a pragmatic lightweight dependency injection framework for Kotlin - InsertKoinIO/koin github.com Koin에 대해선 위 사이트를 방문해보는 것을 추천한다. 간략하게 말하면, Kotlin으로만 작성된 DI Framework이다. Dagger에 비해 상대적으로 쉽게 작성이 가능하다. 단점으로는 런타임, 실제 앱이 실행되는 동안에 DI에 문제가 발생했는지 안했는지 알 수 있다. (Dagger는 컴파일 타임에 알 수 있다.) 자, 이제 Koin을 사용해보자. - Dependency 추..

개발/Android 2020.10.24

[Android] Dependency Injection (a.k.a DI) - 2. MVVM으로 기반 코드 작성

자, 우선 기반 코드를 작성하도록 하겠다. MVVM 아키텍처를 활용할 것이며, 구글의 아래 이미지를 참고하자. https://developer.android.com/jetpack/docs/guide?hl=ko 앱 아키텍처 가이드 | Android 개발자 | Android Developers 이 가이드에는 고품질의 강력한 앱을 빌드하기 위한 권장사항 및 권장 아키텍처가 포함되어 있습니다. 이 페이지는 Android 프레임워크 기본을 잘 아는 사용자를 대상으로 합니다. Android 앱을 처 developer.android.com 더 자세한 내용은 위 문서를 보고, 아래부터는 코드를 통해 DI를 확인 할 것이다. - 기반 코드 패키지 구조 패키지 구조는 위와 같다. 여기서 fake는 실제로 데이터를 받아오기..

개발/Android 2020.10.24

[Android] Dependency Injection (a.k.a DI) - 1. 뭔데? 왜 하는데? Dagger? Koin? Hilt?

최근 개발자 채용공고를 보면 자격요건 혹은 우대사항에 DI가 심심치 않게 나타난다. 이말은 곧 DI라는 것이 개발에 있어 꽤 중요한 부분으로 인식되고 있다는 증거다. 나 또한 회사에서의 개발, 사이드 프로젝트에서 DI를 활용하고 있다. 이번 포스팅은 DI가 무엇이고 왜 쓰는지를 예시와 함께 알아 볼 것이다. - DI가 뭐야? DI는 "Dependency Injecton" 의 줄임말이며 "의존성 주입" 이라는 의미로 해석이 된다. 의존성이란 A라는 객체(클래스)가 B라는 객체(클래스)를 사용한다는 의미로 이해하자. 이해를 돕기 위해 아래의 예시를 보자. class SomeDataRepository { private val source: SomeDataSource = SomeDataSource() } cla..

개발/Android 2020.10.24
반응형