[Android] Android Architecture

2021. 6. 11. 10:21개발/[Android]

Android 권장 아키텍처를 따라야 할까?


안드로이드 개발자는 앱을 개발하는데 있어 고려해야 하는 것이 있다.

바로 모바일 앱 사용자 환경 이라는 것이다.

모바일 앱 사용자 환경이란 ?

예를 들어보자. 우리가 게임을 하였을 때 중간에 전화가 올 수도 있고 문자를 해야 하는 상황이나 급하게 무언가를 입력해야 해서 인터넷에 들어가는 경우도 있다. 이 순간에 사용자는 게임을 나간 상황이지만 사용자 환경은 끊임없이 연결되어있는 상태라고 볼 수 있다. 이러한 상태를 모바일 환경이라 생각하면 편할 것이다.

따라서, 앱은 이러한 사용자 환경 흐름을 올바르게 처리하도록 설계되어야 한다.

위 예제을 통해 안드로이드 앱을 구성하는 컴포넌트들은 사용자 환경 흐름에 따라 개별적이고 비순차적으로 실행될 수 있으며 사용자가 언제든지 앱 컴포넌트를 제거할 수 있다는 것도 이해할 수 있을 것이다.

위를 정리해보자면 결론은 개발자가 이러한 여러 사용자 환경 흐름을 직접 제어할 수 없기 때문에

"앱 구성요소가 서로 종속되지 않고 앱 구성요소가 앱 데이터나 상태를 저장하고 있어서는 안된다."

안드로이드 권장 아키텍처


https://s3-us-west-2.amazonaws.com/secure.notion-static.com/656dbfb3-bacc-48be-adb4-c98f3a47358b/Untitled.png

[출처 : https://developer.android.com/jetpack/guide?hl=ko#recommended-app-arch]

위 그림을 통해 각 구성요소(Activity/Fragment, ViewModel, Repository, Model 등)들이 딱 한 단계 아래의 구성요소에만 종속되어 있는 것을 확인 할 수 있다.

예를 들어, Activity/Fragment는 ViewModel에만 종속되어 있으며 Repository 나 Model에는 종속되어 있지 않다.

Fragment


  • 분할된 화면들을 독립적으로 구성하기 위해 사용함
  • 분할된 화면들의 상태를 관리하기 위해 사용함
  • 동작 또는 Activity 내에서의 UI의 일부를 나타낸다. ( Activity에 포함 )

Activity


  • 사용자에게 UI가 있는 화면을 제공한다.

ViewModel


  • UI 구성요소에 데이터를 제공
  • Model과 커뮤니케이션하기 위한 데이터 처리 비즈니스 로직 역할

Repository


  • 실제로 데이터를 가져오는 작업을 담당하는 곳
  • Retrofit 라이브러리를 사용하여 Repository 파일 안에서 실제 server 통신을 호출하고 데이터를 응답 받는 로직을 작성

'개발 > [Android]' 카테고리의 다른 글

[Android] Retrofit2  (0) 2021.07.16
[Android] Dalvik & ART  (0) 2021.06.08