2021. 6. 11. 10:21ㆍ개발/[Android]
Android 권장 아키텍처를 따라야 할까?
안드로이드 개발자는 앱을 개발하는데 있어 고려해야 하는 것이 있다.
바로 모바일 앱 사용자 환경 이라는 것이다.
모바일 앱 사용자 환경이란 ?
예를 들어보자. 우리가 게임을 하였을 때 중간에 전화가 올 수도 있고 문자를 해야 하는 상황이나 급하게 무언가를 입력해야 해서 인터넷에 들어가는 경우도 있다. 이 순간에 사용자는 게임을 나간 상황이지만 사용자 환경은 끊임없이 연결되어있는 상태라고 볼 수 있다. 이러한 상태를 모바일 환경이라 생각하면 편할 것이다.
따라서, 앱은 이러한 사용자 환경 흐름을 올바르게 처리하도록 설계되어야 한다.
위 예제을 통해 안드로이드 앱을 구성하는 컴포넌트들은 사용자 환경 흐름에 따라 개별적이고 비순차적으로 실행될 수 있으며 사용자가 언제든지 앱 컴포넌트를 제거할 수 있다는 것도 이해할 수 있을 것이다.
위를 정리해보자면 결론은 개발자가 이러한 여러 사용자 환경 흐름을 직접 제어할 수 없기 때문에
"앱 구성요소가 서로 종속되지 않고 앱 구성요소가 앱 데이터나 상태를 저장하고 있어서는 안된다."
안드로이드 권장 아키텍처
[출처 : 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 |