ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android] Android App Architecture Guide
    Programming/Android 2020. 9. 17. 23:30

    안드로이드 개발자 레퍼런스를 보면, 고품질의 앱을 빌드하기 위한 앱 아키텍처 가이드 문서를 제공한다.

     

    모바일 앱 사용자 환경

    일반 데스크톱 앱과 달리 Android 앱 구조는 복잡하다. 안드로이드 앱은 Activity, Fragment, Service, Contents Provider, Broadcast Receiver를 비롯하여 여러 앱 컴포넌트가 포함된다.

    개발자는 Menifest에서 이러한 컴포넌트를 선언하며, Android OS에서 Menifest를 사용하여 사용자 환경에 앱을 통합하는 방법을 결정한다.

     

    SNS 앱에서 사진을 공유하는 상황을 생각해보았을 때, 해당 과정에서 언제든지 전화나 알림에 의해 사용환경이 중단될 수 있다. 사용자는 이 중단에 대응하고 난 후에 사진 공유 프로세스에 돌아가서 기존 작업을 계속 수행하기를 원한다. 스마트폰의 특성상 앱의 흐름이 바뀌는 동작이 빈번하게 일어난다.

    또한 휴대기기는 리소스가 제한되어 있으므로, OS에서 새로운 앱을 위한 공간을 확보하도록 일부 앱 프로세스를 강제로 종료시킬 수도 있다.

     

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

     

    일반 아키텍처 원칙

    앱 구성요소에 앱 데이터와 상태를 저장할 수 없다면 앱을 어떻게 설계해야 할까?

    1. 관심사 분리

    2. 모델에서 UI만들기

    • 모델은 앱의 데이터 처리를 담당하는 컴포넌트로, 앱의 View 객체 및 앱 컴포넌트와 독립되어 있으므로 앱의 LifeCycle과 관련문제의 영향을 받지 않는다.
    • 지속모델을 권장한다.
      • Android OS에서 리소르를 확보하기 위해 앱을 제거해도 사용자 데이터가 삭제되지 않는다.
      • 네트워크 연결이 취약하거나 연결되어 있지 않아도 계속 작동한다.
    • 데이터 관리 책임이 잘 정의된 모델 클래스를 기반으로 앱을 만들면 쉽게 테스트하고 일관성을 유지할 수 있다.

     

     


    Cdeveloper.android.com/jetpack/docs/guide?hl=ko#mobile-app-ux

     

Designed by Tistory.