- Compose
- SSA (Single Activity Architecture)
- DI (Hilt)
- MVI (Model-View-Intent)
프로젝트를 만들고나면 기본 구조는 다음과 같습니다.
MainActivity 를 열어보면 다음과 같습니다.
간단한 Compose 구조로 되어 있어 실행 정도 해볼 수 있는 수준입니다.
예전에는 안드로이드 앱을 개발할때 Activity 및 Fragment 구조로 개발을 진행하였지만, 앞으로는 Compose 구조로만 개발이 진행될 것으로 예상됩니다.
저 또한 기존 개발 방식을 버리고 Compose 로만 강좌를 이어갈 예정입니다.
일반적으로 안드로이드 앱은 여러 액티비티 들로 구성되어 있습니다.
액티비티는 화면을 구성하는 단위로 아래 자료들을 참고 부탁드립니다.
액티비티를 사용하게 되면 생명주기 (Lifecycle)에 많은 영향을 받게 됩니다.
생명 주기가 필요한 상황도 여럿 있습니다.
- 액티비티가 생성되는 상황 감지
- 유저와 상호 작용이 가능한 상황 감지
- 유저와 상호 작용이 안되는 상황 감지
- 액티비티가 제거되는 상황 감지
위 상황들 마다 처리해야되는 작업들이 있을 것 입니다.
예를 들어 유저가 카카오톡 채팅방에서 보내다가 화면을 끄거나 스마트폰의 홈 화면으로 이동한다면 1이 지워지지 않게 한다던지, 최근 접속 시간을 갱신한다던지 등이 있을 것 입니다.
여러모로 유용하게 쓸수있는 반면에, 명확하게 이 생명 주기들을 관리하지 못한다면 NPE(nullpointerexception) 을 시작으로 수많은 에러로 고통을 받게 됩니다.
기존 SSA 는 하나의 액티비티에 여러 프래그먼트를 사용하여 개발하는 아키텍쳐였습니다.
물론 메모리 관리와 같은 부분에서는 유리한 부분도 많았지만, 프래그먼트 또한 액티비티와 상당 부분 유사한 생명주기를 갖고 있기 때문에 여러 액티비티를 사용했을때와 체감상 큰 이득을 보기는 어려웠습니다.
Compose 는 선언형 UI 프레임워크로 SSA 에 정말 적합하다고 생각합니다.
생명주기에 있어서 많은 자유로움을 얻을 수 있고 편리한 SSA 적용 방법도 소개해드릴 예정입니다.
DI(Dependency Injection) 는 소스코드 의존성을 자동 주입하게 해주는 것을 의미합니다.
DI 는 한번도 안써본 사람은 있어도 한번만 써본 사람은 없을 만큼 매우 강력한 라이브러리이기 때문에 반드시 사용 해보시는 것을 추천드립니다.
Hilt 는 DI 를 해주는 라이브러리 중 하나이며, Koin, Dagger 과 같은 라이브러리도 있습니다.
제가 처음으로 접하기도 했고 현재도 사용하고 있는 Hilt 를 기반으로 강좌를 진행하려고 합니다.
Google에서도 Hilt 를 밀고있는 느낌이 더 많은 것도 이유 중 하나로 꼽을 수 있을 것 같습니다.
MVI 는 디자인 패턴 중 하나입니다.
디자인 패턴의 종류는 매우 다양합니다.
- MVC
- MVP
- MVVM
- MVI
디자인 패턴마다 특징도 다 다르고, 사용하는 언어 및 프레임워크 등에 있어서 많은 효율 차이가 존재합니다.
저는 현재 MVI 를 사용하고 있지만, 최근까지도 MVVM 을 사용하여 개발하고 있었습니다.
MVI 는 제 기억으로 작년 초 정도에 알긴 했었지만, 올해 초 들어서 Compose 와 같이 사용하게 되었습니다.
그리고 저의 개인적인 생각은 안드로이드에 정말 적절한 디자인 패턴이 아닌가 하는 생각이 듭니다.
그만큼 정말 매력적인 디자인 패턴이였고, 앞으로도 몇년동안은 계속 MVI를 애용하지 않을까 싶은 생각이 듭니다.
서두에서 기술한 4가지 기술 스택은 사실 Compose 를 위한 스택이라고 봐도 무방합니다.
- Compose
- SSA (Single Activity Architecture)
- DI (Hilt)
- MVI (Model-View-Intent)
구글은 Compose를 지속적으로 밀고 있으며, 앞으로는 기존 XML 방식을 완전히 밀어내고 Compose 로 대체 할것이라고 보여집니다.
이미 발빠른 기업들은 신규 프로젝트는 Compose 로 개발을 진행하고 있고, 기존 프로젝트도 거의 다 마이그레이션 하고 있는 것으로 알고 있습니다.
그만큼 Compose 의 중요성을 날이 갈수록 높아지고 있고, 우리도 Compose 를 통해 시장의 흐름을 맞춰 갈 수 있게 노력해보면 좋겠습니다.
다음 강좌부터는 직접 코드를 작성해보면서 진행해보도록 하겠습니다.
감사합니다!
나만의 안드로이드 앱 만들기(초보자 편) - common (6-3) (0) | 2023.11.11 |
---|---|
나만의 안드로이드 앱 만들기(초보자 편) - 의존성 추가 및 패키지 구분하기 (6-2) (0) | 2023.11.01 |
나만의 안드로이드 앱 만들기(초보자 편) - Git 연동하기(5) (0) | 2023.10.20 |
나만의 안드로이드 앱 만들기(초보자 편) - 단축키 익히기(4) (1) | 2023.10.20 |
나만의 안드로이드 앱 만들기(초보자 편) - 개발 환경 만들기(3) (1) | 2023.10.19 |