Nuke Olaf - Log Store

안드로이드 앱 아키텍처 가이드 본문

Android

안드로이드 앱 아키텍처 가이드

NukeOlaf 2020. 3. 7. 19:22

https://developer.android.com/jetpack/docs/guide

안드로이드 앱의 구성요소는 개별적이고 비순차적으로 실행될 수 있다.

예를 들어서 인스타그램에 사진을 공유하는 상황을 생각해보자. 인스타에서 사진 촬영 버튼을 누르면, 앱이 카메라 intent 를 시작한다. 그러면 안드로이드의 OS 에서 카메라 앱을 실행시켜준다. 그러면 사용자는 인스타 앱에서 나간 상황이지만, 사용환경은 끊임없이 연결되어 있다. 카메라 앱으로 사진을 촬영하고, 촬영한 사진을 확인하기 위해 앨범 앱을 실행할 수도 있을 것이다. 그러고 나서 사용자는 다시 인스타 앱으로 돌아와 사진을 공유할 것이다.

이 과정에서 언제든지 전화나 알림에 의해 사용환경이 중단될 수 있을 것이다. 사용자는 전화나 알림을 처리하고 난 뒤에 사진 공유 프로세스로 돌아가 작업을 계속할 수 있기를 기대한다. 휴대기기에서는 이렇게 앱을 바꾸는 동작이 일반적이어서 앱에서 이런 흐름을 올바르게 처리해야 한다.

또한, 휴대기기는 리소스가 제한되어있으므로 운영체제에서 새로운 앱을 위한 공간을 확보하도록 언제든지 일부 앱 프로세스를 종료해야할 수 있다.

이러한 환경 조건으로 인해 앱 구성요소는 개별적이고 비순차적으로 실행될 수 있으며, 운영체제나 사용자가 언제든지 앱 구성요소를 제거할 수 있어야 한다. 이러한 이벤트는 직접 제어할 수 있는 것이 아니기 때문에 앱 구성요소에 앱 데이터나 상태를 저장해서는 안 되며, 앱 구성요소가 서로 종속되면 안된다.

앱 데이터와 상태를 저장하는 데 앱 구성요소를 사용할 수 없기 때문에 앱을 설계할 때는 다음과 같은 아키텍처 원칙을 지켜야 한다.

1. Activity 또는 Fragment 와 같은 UI 기반의 클래스는 UI 및 운영체제 상호작용을 처리하는 로직만 포함하도록 한다.

2. 앱의 데이터 처리를 담당하는 구성요소인 Model 에서 UI 를 만든다.

Comments