본문 바로가기

Android/Architecture

(16)
[Android] Jetpack Compose 환경에서 MVI Pattern 구현하기 공부를 진행하다가 MVI Pattern에 대한 내용을 접하게 되었다.현재 진행하고 있는 프로젝트들은 MVVM 기준으로 구조가 잡혀있기 때문에 MVI Pattern은 사용하지 않고 있었는데, 이전 아키텍처를 공부할 때 샘플을 만들어 본 이후로 MVI Pattern으로 구현을 해보지 않았다는 것을 깨닫게 되었다. 더군다나, Jetpack Compose 환경에서는 MVI Pattern을 사용한 적이 없어서 이번 기회에 간단한 샘플을 만들어 구현해보고자 하였다.우선,MVI Pattern이 무엇인지부터 다시 복기해 보도록 하자.2022.04.30 - [Android/Architecture] - [Android] MVI Pattern?필자가 2년도 더 전에 아키텍처를 공부하면서 작성했던 글이다. 자세한 설명은 해당..
[Android] Single Activity Architecture (SAA) + Navigation - 이슈 해결 본 게시글은 이전 게시글에 이어서 작성된 부분입니다. 2022.07.04 - [Android/Architecture] - [Android] Single Activity Architecture (SAA) + Navigation 이전 게시글에서 SAA에 대한 기본적인 샘플 프로젝트를 만들어 보았다. 이번 게시글에서는 이어서 SAA 구조의 샘플을 만들면서 시간이 걸렸던 이슈들에 대해서 살펴보고자 한다. 우선, 가장 처음 발생했던 이슈는 ViewModel의 주입 타이밍이다. override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) viewModel = getViewModel() p..
[Android] Single Activity Architecture (SAA) + Navigation 다양한 레퍼런스를 확인하던 와중 Single Activity Architecture (Application)에 대한 글을 보았다. 단일 혹은 아주 적은 개수의 Activity만 사용하고 모두 Fragment로 구현한 구조인데, 상당히 흥미로운 구조라고 생각하여 Jetpack Navigation을 사용하여 구현해 보았다. 이번 글에서는 SAA 구조로 샘플 코드를 만들어 보면서 발생했던 이슈와 처리 과정에 대하여 기술해볼 생각이다. 우선, SAA란. Single Activity Architecture는 Google I/O 2018에서 언급된 개념으로, 하나 혹은 적은 갯수의 Activity만을 사용하고 나머지 화면은 Fragment로 구성한 구조로, 주로 JetPack Navigation과 함께 사용되는 구..
[Android] MVP Pattern을 적용해보자. 최근에 진행되는 프로젝트를 보면 MVVM Pattern을 많이 사용하여 개발을 진행하지만, 그에 못지않게 MVP Pattern도 많이 사용하는 것으로 보인다. 2020.06.11 - [Android/Architecture] - [Android] MVC, MVP, MVVM 기본 개념 필자가 몇 년 전에 MVC, MVP, MVVM Pattern에 대한 기본 개념을 간단하게 정리한 글이 있는데, 실제로 해당 패턴을 사용하여 구현한 적이 없어 해당 패턴으로 구현된 프로젝트를 보니 이해하는 것이 생각보다 쉽지 않았다. 따라서, 해당 패턴을 다시 한번 정리하고 샘플 예제를 만들어서 이해도를 높이고자 한다. 우선, MVP Pattern에 대하여 다시 한번 확인하고 넘어가보도록 하자. Model, View, Prese..
[Android] MVI Pattern을 적용해보자. 본 게시글은 이전 게시글에서 이어서 작성된 부분입니다. 2022.04.30 - [Android/Architecture] - [Android] MVI Pattern MVI Pattern에 대한 기본적인 정리를 해보았으니, 이번에는 실제로 예제를 만들어보면서 조금 더 확실하게 이해해보고자 한다. 필자는 MVVM + MVI 형태의 샘플 코드를 만들어보았다. 필자가 샘플 코드를 작성하면서 진행했던 흐름대로 글을 작성할 생각이다. 프로젝트의 기본적인 구조는 Clean Architecture Sample에 사용된 것들을 가져왔으며, Module을 나누어서 생성해도 됐겠지만, 조금 더 기본적인 구조에 초점을 맞춰서 이해하기 위하여 하나의 모듈로 만들었다. 기본적인 구조에 대한 것은 생략하고, MVI를 적용하는데 필요..
[Android] MVI Pattern ? 최근 스터디를 진행하면서 기술 블로그를 탐방하다 MVI Pattern을 보았다. 이전에 디자인 패턴에 대하여 공부할 때 확인했던 패턴인데, 그 당시에는 기존의 디자인 패턴과는 좀 다른 모습을 보이고, 이해하기에 어려움이 있는 것으로 보여서 패스했던 기억이 있다. 이제야 다시 한번 MVI Pettern에 대하여 스터디를 진행했고, 이해한 것들을 토대로 글을 한번 작성해보고자 한다. MVI Pattern에 대하여 스터디하기 위해 여러 게시글을 보면 항상 나오는 그림이 있다. 그리고, 이런 것도 말이다. View ( Model ( Intent( ) ) ) 필자가 클린 아키텍처에 대한 글을 작성했을 때도 그랬지만, 맨땅에 보면 이해하기가 쉽지 않다. MVI Pattern에 대하여 이해하고 해당 Flow를 확인하..
[Android] Repository Pattern 디자인 패턴을 살펴보던 도중, Repository Pattern을 적용해본적은 있지만 정리를 하지 않았던 것을 발견하여 간단하게 정리를 하면서 글을 작성해보고자 한다. Clean Architecture 예제를 확인해보면 repository를 적용했다는 것을 확인할 수 있으니, 해당 샘플을 Repository Pattern의 예제로 보면 될 것으로 보인다. 우선, Repository Pattern에 대하여 검색하면 다음과 같은 이미지를 어렵지 않게 볼 수 있다. 이 이미지로 확인할 수 있는 구조가 Repository Pattern을 아주 잘 설명한 것이기 때문이다. Repository Pattern은 Data의 출처에 관계 없이 동일한 인터페이스로 데이터에 접근할 수 있도록 하는 패턴이다. 즉, DataS..
[Android] Modular Architecture 예제 처음 학습하면서 작성한 글입니다. 필요시 추후 내용을 수정할 예정입니다. 틀린 부분이 있으면 언제든 지적해주면 감사하겠습니다 :) 해당 게시글에 사용한 예제 코드는 하단에 링크로 추가해두었습니다. 만들어둔 클린 아키텍처 예제 코드를 사용하여 Modular Architecture 구조의 예제를 만들어 보면서 학습하였다. 디테일하게 생각하여 모듈을 나눌 수 있지만, 처음부터 많은 모듈로 나눠서 사용하게 되면 복잡도만 올라가고 불필요한 코드만 늘어날 것이라고 생각하여 많은 부분을 모듈로 나누어서 사용하지 않았다. 해당 모듈러 아키텍처 예제를 만들면서, 기존 클린 아키텍처 예제에서 여러 가지를 추가해 두었다. Coordination Pattern, AAC Navigation, DataStore 를 추가적으로 사..