본문 바로가기
반응형

클린아키텍처6

Android - 상태관리, LiveData 대신 StateFlow를 사용하자. 현재 안드로이드 생태계는? 현재 안드로이드 생태계는 MVVM 아키텍처, 클린아키텍처가 대세가 되고, MVI 아키텍처가 점점 핫해지고 있다. 그만큼 개발 기술이 빠르게 발전하고 있고, 더욱 강력한 도구들이 생겨나고 있다는 것이다. Google에서 Android Architecture Compoenent로 여러가지 도구를 제시하고 있고, 그 중에 ViewModel과 LiveData는 정말 핫하고 유용하며, 현재 안드로이드 앱 개발에 있어서 가장 기본적인 도구로 몇년동안 자리잡고 있다. 그러나 시간이 지나면서 이들도 구시대의 기술이 되어가는 것은 당연하다. 영원히 최고의 도구는 없으니까. 오늘은 그 중 하나인 LiveData에 대해, 그리고 이를 대체할 StateFlow에 대해서 얘기해본다. 상태관리, 그리고.. 2023. 8. 3.
[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.. 2023. 1. 1.
[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.. 2022. 7. 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.. 2022. 7. 9.