Home 안드로이드 앱 구조
Post
Cancel

안드로이드 앱 구조

안드로이드 앱 구조

의미와 기능에 대해서만 대략적으로 알아보자.

  • 안드로이드에는 두 가지 설치파일이 존재한다.
    1. apk : Android Package로 앱을 설치하고 실행하는데 필요한 데이터들이 포함되어 있다.
    2. aab : Android App Bundle로 런타임에 필요하지 않은 추가 메타데이터를 포함해 앱 프로젝트의 콘텐츠가 포함되어 있다. aab는 설치파일이 아닌 모음집같은 형태로, 구글 플레이스토어에 등록되면 구글 플레이스토어 서버에서 특정 디바이스에 최적화된 리소스 및 파일로 변환해 apk형식으로 변환해준다.
  • 안드로이드 앱은 안드로이드 운영체제에서 각각 다른 사용자로 실행된다. (리눅스의 멀티유저와 동일)
  • 앱들이 실행되면 프로세스 형태로 유지되는데, 각각의 앱들은 다른 앱들과 분리되어 실행된다.

앱 컴포넌트

  • 앱 컴포넌트는 안드로이드 앱을 구성하는데 필요한 구성요소들이다.
  • 각각의 컴포넌트들은 시스템이나 유저가 들어갈 수 있는 entry point(입구개념)를 제공한다.
  • 그러나 다른 앱에서 다른 앱의 컴포넌트에 직접 접근해 실행을 요청할 수 없기 때문에 안드로이드 시스템을 통해서 실행을 요청한다.
  • 컴포넌트에는 4가지가 존재한다.
    1. 액티비티 (Activity)
    2. 서비스 (Service)
    3. 브로드캐스트 리시버 (Broadcast receiver)
    4. 콘텐츠 프로바이더 (Content provider)
  • 각각의 앱 컴포넌트들은 목적이 다르며, 컴포넌트의 Lifecycle(생성과 제거를 의미) 어떻게 정의되어 있는지도 컴포넌트마다 다르다.

앱 컴포넌트 활성화

  • 4개의 컴포넌트 중 액티비티, 서비스, 브로드캐스트 리시버는 intent라고 불리는 메시지 전달자에 의해 실행될 수 있으며 런타임때 개별 컴포넌트들을 연결한다.
  • 액티비티와 서비스에서 intent는 특정 작업(보기 또는 보내기)을 담당한다. 즉, 다른 액티비티로 이미지를 보내거나 웹 페이지 열기, 다른 액티비티를 시작하는 등의 요청을 의미한다.
  • 브로드캐스트 리시버에서 intent는 브로드캐스트될 알림을 정의한다. 즉, 배터리가 부족함을 알려주는 브로드캐스트에는 배터리 부족을 나타내는 작업 문자열만 포함된다.

액티비티 (Activity)

  • 액티비티는 사용자와 직접 상호작용하는 entry point로 단일 화면을 표현한다.
  • 이메일 앱에서 메일 목록 화면, 메일 읽는 화면, 메일 쓰는 화면이 각각 다른 독립적인 액티비티로 표현된 것이라고 볼 수 있다.
  • 각각의 컴포넌트들은 각자의 entry point를 갖고 있다고 했으므로 앱에서 허용된 액티비티에 다른 앱이 접근할 수 있다. 예를 들어서 이메일 앱에서 카메라에 접근해 사진을 찍고 파일을 업로드 할 수 있거나 갤러리에서 사진을 가져와 업로드하는 것들을 의미한다.

서비스 (Service)

  • 서비스는 백그라운드에서 앱이 계속 실행되도록 해주는 범용적인 목적의 entry point이다.
  • 이 컴포넌트는 백그라운드에서 긴 작업을 수행하거나 원격 프로세스에 대한 작업을 수행하기 위해 백그라운드에서 실행된다.
  • 예를 들어서 다른 앱을 사용하는 동안 음악을 듣는다거나 네트워크 관련 활동을 진행한다거나 사용자의 개입이 없는 작업들을 수행한다.
  • 시스템이 서비스를 다루는 형태는 아래 두가지가 있다.

    1. Started service : 작업이 완료될 때까지 서비스를 계속 실행하도록 시스템에 전달한다. 즉 위에서 언급한 앱이 최상위에 있지 않더라도 음악을 듣는 등의 작업을 의미한다.
    2. Bound service : 다른 앱 또는 시스템에서 서비스를 이용하고자 할 때 실행되는 서비스이며 기본적으로 다른 프로세스에 API를 제공한다.

브로드캐스트 리시버 (Broadcast Receiver)

  • 브로드캐스트 리시버는 시스템이 사용자가 앱을 사용하는 것과 다르게 앱에 이벤트를 전달하거나 앱이 시스템 알람을 받을 수 있도록 한다.
  • 브로드캐스트 리시버도 entry point를 가지고 있으므로 시스템은 현재 실행중이지 않은 앱에도 Broadcast를 보낼 수 있다.
  • 대부분의 Broadcast는 시스템에서 시작되는데, 예를 들어 화면이 꺼졌거나 배터리가 부족하다거나 하는 알람을 전달한다.

콘텐츠 프로바이더 (Content Provider)

  • 콘텐츠 프로바이더는 파일 시스템이나 SQLite 데이터베이스, 웹 등의 위치에 데이터를 저장할 수 있도록 관리한다.
  • 예를 들어서 안드로이드 시스템은 사용자의 연락처를 관리할 수 있는 콘텐츠 프로바이더를 제공한다.

참고자료

This post is licensed under CC BY 4.0 by the author.

안드로이드 wrap_content, match_parent

안드로이드 앱 아키텍처

Comments powered by Disqus.