Manifest 파일 정리하기

Manifest란?

Manifest는 안드로이드 Application에 대한 각종 정보를 기술한 Application 명세서이다. 가장 상위 폴더에 Manifest 파일이 있어야하고 이 정보는 앱이 실행되기 전에 시스템이 알아야 할 내용을 정의하고 있다.
즉, 안드로이드 시스템이 앱의 코드를 실행하기 전에 확보해야 하는 앱에 대한 필수 정보를 시스템에 제공하는 목록 이라고 정의할 수 있다.

Manifest 4대 구성요소

✔ Intent란?

Application 구성요소 간에 작업 수행을 위한 정보를 전달하는 역할을 한다. 어떤 Component에서 다른 Component를 호출하고 싶다는 의사표현을 안드로이드에서는 Intent를 사용한다. 4대 Component는 Intent에 의해 활성화된다.


✔ Activity

<activity>

사용자에게 보여주는 UI화면이다. 하나의 Application에는 최소 1개 이상의 Activity가 존재해야한다. Manifest 파일에 선언되지 않은 Activity는 시스템이 표시되지 않으며 실행되지 않는다.

✔ Service

<service>

UI 없이 백그라운드 작업을 수행하는 구성요소이다. Activity가 사용자에게 직접 보이는 화면이라면 Service는 Activity가 종료되어 있는 상태에서도 동작하기 위해 만들어진 구성요소이다.

✔ Broadcast Receiver

<receiver>

System 전반에서 특정 이벤트에 대해 응답하는 역할을 한다. 배터리가 부족하거나, 스크린이 캡쳐될 때, 파일 다운로드가 완료되었을 때 등 이러한 행위들이 Broadcast Receiver 를 통해 응답받을 수 있다. 하지만 Broadcast Receiver 자체는 이벤트를 확인하는 기능만 담당할 뿐 사용자에게 알리지는 않는다. 개발자는 이를 사용자에게 알리기 위해서는 notification, Toast를 사용하여 알려야한다.

✔ Contents Provider

<provider>

앱 내에서 사용할 수 있는 데이터를 공유하기 위한 구성요소로 앱은 Contents Provider 에만 접근하며 필요한 데이터를 얻어올 수 있다. Application 에서 자료를 저장할 때 DB를 사용하는데 이 DB는 해당 앱 외에는 다른 앱이 접근하는 것이 불가능하지만 Contents Provier의 역할중에 하나가 외부 앱이 DB에 접근하는 것을 막는 동시에 DB중에 원하는 것들만 공유할 수 있도록 한다.

Intent-Filter

<intent-filter>

인텐트에는 두 가지 종류가 있다.

  • 명시적 인텐드 : 호출할 컴포넌트를 명확하게 알려주는 것 이다.
  • 암시적 인텐드 : 호출할 컴포넌트를 정확하게 아는 것이 아닌 인텐트 객체 내 호출 컴포넌트를 찾을 수 있는 정보들이 명시한 것 이다.

암시적 인텐드를 통해 사용자로 하여금 어느 컴포넌트를 사용할지 선택하도록 하고자 할 때 Intent-Filter 가 필요하다. 안드로이드 시스템 내부에서 수많은 Application 들에 의해 수많은 인텐드들이 발생하는데 이 중 자신에게 필요한 인텐드들만 받기 위해 Intent-Filter가 필요한 것 이다.

✔ 암시적인 인텐드는 왜 필요할까 ?
자신이 만든 컴포넌트라면 컴포넌트의 이름을 정확히 알 수 있지만, 다른 사람이 만든 컴포넌트의 이름을 알기는 어렵다. 따라서 명시적 인텐드는 사용하여 호출할 수 없다.







참고자료: https://jitolit.tistory.com/112

좋은 웹페이지 즐겨찾기