본문 바로가기

android

Android Manifest 와 4대 컴포넌트

해당 자료는 android developer 공식 홈페이지를 정리한 것이다.

자료 링크 : https://developer.android.com/guide/topics/manifest/manifest-intro?gclid=Cj0KCQjwvZCZBhCiARIsAPXbajsoLZeaOiaufZJ-2uLhJl70tnZYBpVCtwTWGN7kks6QqFGLEAQN4fYaAox4EALw_wcB&gclsrc=aw.ds#components

Manifest 란?

모든 앱은 프로젝트를 만들고 들어가면 manifests → AndroidManifest.xml이라는 파일이 나온다.

AndroidManifest는 Android build tools, Android operating system, Google Play 앱에 대한 필수 정보를 설명한다. 즉 앱에 대한 기본 정보를 나타내기 위해 존재한다.

4대 구성요소

이 요소들은 애플리케이션에서 사용하려면 Manifest file에서 꼭 선언해주어야 한다.

 

activity

하위 클래스인 Activity를 선언 한다. Activity란 애플리케이션의 UI의 일부를 구현 활동을 하는 클래스이다. 하나의 어플리케이션에는 최소 1개이상의 Activity가 존재해야한다.현재 activity에서 다른 activity를 열기 위해선 startActivity()를 사용한다.

service

하위클래스인 Service를 선언 한다. Activity와 달리 UI를 구현하는 부분은 없고

activity가 동작하지 않아도 동작하는 background 작동과

다른 애플리케이션에서 호출 할 수 있는 통신 api를 구현하는데 사용된다.

Context.startService() 백그라운드에서 수행하려는 작업에 대해 시스템에 알리는기능

Context.bindService() 응용 프로그램의 기능 중 일부를 다른 응용 프로그램에 노출하는 기능

recevier

하위 클래스인 Broadcast Recevier를 선언한다. BoradcastRecevier은 애플리케이션의 다른 구성 요소가 실행되고 있지 않아도 시스템이나 다른 애플리케이션에서 브로드캐스트(배터리 부족, 스크린캡처 등) 하는 인텐트를 애플리케이션이 수신 할 수 있다. 이는 수신 기능만을 하고 이를 이용해 알림을 따로 전달해야 한다.

provider

하위 클래스인 ContentProvider를 선언한다. ContentProvider은 여러 애플리케이션 간에 데이터를 공유해야 하는 경우에만 필요하다. 데이터를 다루기 위해 자체 DB 이외에 다른 앱의 데이터를 가져와 사용해야 할 때 사용한다. 예를 들어 카카오톡의 전화번호를 등록하면 자동으로 친구 추가 이루어지는 기능이 있다.

 

여기서 Intent라는 개념이 등장하는 데 각각의 어플리케이션 구성요소 간에 통신을 맡는다.

Activity, Service, Broadcast 는 Intent에서 작업을 요청하는데

예를 들어 작업을 안드로이드 시스템이 A엑티비티의 인텐트와 일치하는 B엑티비티의 인텐트를 찾아 시스템은 해당 메소드를 호출하고 전달한다.

intent-filter

Activity, Service 또는 Broadcast Receiver가 응답할 수 있는 인텐트 유형을 지정한다.

intent-filter에는 요소가 최소 하나 이상 포함되어야 하는데 action은 인텐트에 포함되어있는 명령이다.

 

여기서 말하는 인텐트 유형은 명시적 인텐트암시적 인텐트이다.

명시적 인텐트는 시작하려는 컨포넌트의 이름을 지정해주는 것이다.

명시적 인텐트를 해주기 위해서는 Intent 객체에 컨포넌트 이름을 정의해야한다.

암시적 인텐트는 컨포넌트의 이름을 지정하지 않고 작업을 선언하는 것이다.

 

그렇다면 암시적 인텐트는 어떻게 작업을 요청할까? 선언한 작업을 수행할 수 있는 모든 앱을 호출하여 어떤앱을 사용할지 선택한다. 예를 들어 뉴스를 보고자 링크를 클릭할 때 이를 네이버로 볼 지 크롬으로 볼지 선택하는 경우 암시적 인텐트를 사용한다.

 

 

 

 

 

오늘은 Manifest file에 존재하는 4대 구성요소에 대해 간단히 알아보았고 추후 자세히 정리해서 포스팅 하겠다.