상세 컨텐츠

본문 제목

안드로이드 문서 정리 - 앱 기본 요소

안드로이드 문서 정리

by yebon.kim 2021. 3. 30. 00:02

본문

반응형
이 글은 제가 공부하기 위한 안드로이드 문서 정리글로 원문은 아래 링크에 있습니다.

원문 링크

 

앱 기초

앱 기본 요소

 

이 문서에서는 앱의 4대 구성 요소 및 Intent는 간단히 다루고 각각 세세하게는 다른 문서에서 다룸.

  • 각 Android 앱은 자체적인 보안 샌드박스에 속함.
    • Android 운영체제는 멀티유저 Linux 시스템, 각 앱은 각기 다른 사용자
    • 시스템은 각 앱에 고유한 Linux Id 할당. 시스템은 앱 안의 모든 파일을 이 Linux Id만을 이용하여 접근할 수 있도록 권한을 설정.
    • 각 프로세스는 자체 가상 머신이 있기 때문에 앱의 코드는 다른 앱과 격리됨.
    • 각 앱은 자신의 리눅스 프로세스 위에서 실행됨. 시스템은 앱의 어떤 구성요소가 시작되든 프로세스를 시작하고 필요없을 때 또는 다른 앱을 위해 메모리가 필요할 때 프로세스를 종료시킴.
  • 위와 같은 구조로 인해 앱이 다른 앱의 정보에 직접 접근할 수 없다. 하지만 앱이 다른 앱과 데이터를 공유하는 방법은 여러가지가 있다.
    • 두 개의 앱이 같은 Linux ID를 사용하도록 설정할 수 있다. 이 때 이 두 앱은 같은 인증서로 서명되어야 한다.

앱 구성 요소

앱의 4대 구성요소와 Intent

 

  • 앱은 아래 4가지로 이루어짐. 각 요소는 목적과 수명 주기가 모두 다름. 아래 각 요소는 각각 앱에 대한 진입점임
    • Activity
      • 사용자와 상호작용하기 위한 요소. 화면 하나를 나타냄.
      • 사용자가 관심을 기울이는 작업이기 때문에(화면에 보이고 있으므로) 시스템은 화면에 보이는 Activity를 실행하는 프로세스가 계속 유지될 수 있도록 함.
      • 프로세스가 죽었을 때 Activity는 이전의 상태를 저장하여 사용자가 다시 Activity로 돌아가고자 할 때 이를 복원함.
    • Service
      • 앱이 백그라운드에서 계속 실행하기 위한 요소. UI를 제공하지 않음.
      • 서비스는 포그라운드 서비스와 백그라운드 서비스로 나뉨. 두 서비스의 차이점은 사용자가 서비스가 실행되고 있음을 인지할 수 있는지 여부. 백그라운드 서비스는 상대적으로 중요도가 낮아 시스템은 RAM이 부족할 경우 백그라운드 서비스를 더 잘 종료시킴.
    • Broadcast Receiver
      • 시스템이 이벤트를 앱에 전달하도록 지원하는 요소.
      • 이 요소 역시 앱의 진입점이기 때문에 시스템은 실행되지 않은 앱에도 브로드캐스트를 전달할 수 있음.
      • 시스템 뿐만 아니라 앱도 브로드캐스트를 시작할 수 있음.
      • UI는 제공하지 않지만 상태 표시줄에 알림을 생성할 수 있음
    • Content Provider
      • File System, SQLite DB, 웹 등 앱이 접근할 수 있는 다른 모든 영구 저장 위치에 저장 가능한 앱 데이터의 집합.
      • Content Provider를 통해 위 데이터를 조회하거나, Content Provider가 허용할 경우 수정도 가능.
      • 시스템에게 Content Provider는 uri로 식별되는 데이터를 다루기 위한 앱의 진입점.

구성 요소 활성(Intent)

  • Activity, Service, Broadcast Receiver는 Intent라는 비동기식 메시지로 시작될 수 있음.

Manifest File

  • 매니페스트는 아래와 같은 사항을 선언할 수 있음
    • 구성 요소 선언
      • 앱의 4대 구성 요소를 선언. 시스템은 4대 구성 요소 실행 전 Manifast에서 해당 요소가 실제 존재하는지 확인함.
      • Activity, Service, Content Provider는 매니페스트에 선언되지 않았을 경우 실행될 수 없음. 단, Broadcast Receiver는 매니페스트에 선언하지 않고 코드를 통해 동적으로 생성하여 시스템에 등록해도 됨.
    • 구성 요소의 기능 선언
      • 암시적 Intent는 Intent가 수행해야 할 작업의 유형, 또는 다룰 데이터의 종류를 지정함. Manifest에는 각 구성 요소가 어떤 유형의 작업을 처리할 수 있는지, 어떤 종류의 데이터를 다룰 수 있는지 선언함. (Intent-filter)
    • 앱 요구사항 선언
      • 앱이 필요한 하드웨어적, 소프트웨어적 요구사항을 선언함. 예를 들어 앱이 카메라가 필요할 경우 이를 매니페스트에 명시할 수 있고 Google Play는 이 정보를 통해 요구사항이 충족되지 않는 기기에서는 해당 앱이 깔리지 않도록 할 수 있음.
반응형

관련글 더보기

댓글 영역