본문 바로가기
Android & Kotlin/Android

Android Manifest 개념 확립(App Component : activity, service, broadcast receiver, content provider / Intent)

by 말린밴댕이_공부 2022. 11. 20.
반응형

Manifest란?

모든 앱 프로젝트 안드로이드 빌드 도구, 운영체제 및 Google play에 앱에 관한 필수 정보를 설명합니다. 모든 반드시 소스세트 루트에 AndroidManifest.xml파일을 가져야 합니다.

Android Studio에서 기본적인 Empty Activity를 빌드하게 되면 메니페스트 파일이 이와 같이 자동적으로 생성이 됩니다.

Manifest에 존재하는 default로 생기는 것들의 의미

<application>

→ 애플리케이션 각 모든 구성요소에 영향을 줄 수 있는 속성을 선언

  • allowBackup : 애플리케이션 백업 및 복원 인프라에 참여하도록 허용할지 여부
  • dataExtractionRules : 애플리케이션 백업이나 전송작업의 일부로 규칙을 지정
  • fullBackupContent : 자동 백업용 전체 백업 규칙이 포함된 xml을 가리킴
  • icon : 아이콘
  • label : 전체 애플리케이션을 나타내는 각 애플리케이션의 기본 라벨
  • roundicon : 원형 아이콘
  • supportsRtl : 애플리케이션이 오른쪽에서 왼쪽 레이아웃을 지원하는지 여부를 선언
  • theme : 모든 활동의 기본테마를 정의하는 스타일 리소스의 참조

<activity>

→ 애플리케이션의 시각적 사용자 인터페이스 요소를 구현하는 활동을 선언

  • exported → 다른 애플리케이션 구성요소에서 활동을 시작할 수 있는 지 설정

<intent filter>

→ 활동, 서비스, broadcast receiver가 응답 할 수 있는 인텐트의 유형을 지정

  • <action>이 하나 이상 있어야하며 없으면 Intent객체를 허용하지 않음

<meta-data>

→ 상위 구성요소에서 제공될 수 있는 추가 임의 데이터 항목의 이름-값 쌍

 

앱 구성 요소 네가지 (안드로이드 4대 컴포넌트)

  • 액티비티 (Activity)
    • 사용자와 상호작용하기 위해 사용자 인터페이스를 포함한 화면 하나를 나타냄
    • View와 ViewGroup을 사용자에게 UI를 제공합니다. (EX)View는 버튼과 텍스트 같이 화면에 보이는 구성요소들, ViewGroup은 레이아웃이 될 수 있다.)
    • 다른 액티비티와도 소통을 할 수 있고 완전히 분리된 다른 앱의 액티비티와도 상호작용 할 수가 있다.
  • 서비스 (Service)
    • 여러가지 이유로 백그라운드에서 앱을 계속 실행하기 위한 다목적 진입점 즉, 백그라운드에서 실행되는 구성요소. (ex) 백그라운드에서 음악을 재생하는 등의 서비스)
    • 모든 서비스는 Service 하위 클래스로 구현이 된다.
    • 항상 백그라운드에서 프로세스가 돌고 사용자에게 보요지지 않는 상태에서 처리
  • 브로드캐스트 수신자(Broadcast Receiver)
    • 시스템이 정기적인 사용자 플로우 외부 이벤트를 앱에 전달하도록 지원하는 구성요소
    • 즉, 안드로이드에서 생기는 다양한 이벤트와 정보를 받고 전달하는 요소.
    • 사용자가 상태표시줄 알림을 생성하여 사용자에게 중단된 캐스트 이벤트가 발생 했는지 알릴 수 있다.
    • 모든 BroadcastRecevier는 BroadcastReceiver 하위클래스로 구현되고 각 인스턴스는 Intent객체로 전달된다.
    • ex) 배터리 부족 / 전화,메세지 수신 / wifi설정 등등
  • 콘텐츠 제공자(Content Provider)
    • 파일시스템,SQLite 데이터베ㅔ이스, 웹상이나 앱이 액세스 할 수 있는 다른 저장위치에 저장가능한 앱 데이터의 공유형 집합을 관리
    • Content Provider를 쿼리하여 특정한 개체에 대한 정보를 읽고 쓸 수 있음
    • 외부 애플리케이션이 데이터베이스에 접근 못하게 할 수 있으면서 공유하고 싶은 데이터만 공유할 수 있도록 도와주는 컴포넌트

Intent

  • 메시징 객체로 다른 앱 구성요소로부터 작업을 요청하는데 사용할 수 있다. 앱 구성요소들을 오가면서
  • 기본적인 사용 사례 세가지
    • 액티비티 시작
    • 서비스 시작
    • 브로드캐스트 전달
  • 인텐트 유형
    • 명시적 인텐트 : 인텐트를 충족하는 애플리케이션이 무엇인지를 지정하고 이를 위해 대상 앱의 패키지 이름 또는 완전히 자격을 갖춘 구성요소 클래스 이름을 제공. 즉, 대상컴포넌트가 확실히 정해진 경우
    • 암시적 인텐트 : 특정 구성 요소의 이름을 대지 않지만, 대신 수행할 일반적인 작업을 선언하여 다른 앱의 구성요소가 이를 처리 할 수 있도록 해줌 즉, 대상컴포넌트가 확실히 정해지지 않은 경우 (ex) 무언갈 공유할때 카톡, 메세지, 인스타그램 등 여러 어플리케이션이 뜨는 경우)
  •  
반응형

댓글