본문 바로가기

Android

안드로이드 4대 컴포넌트

728x90

애플리케이션을 작성하는 데 필수적인 개념들은 무엇이 있을까요?

지금부터 알아보겠습니다.

안드로이드 앱은 컴포넌트(Component)들로 구성된다는 점입니다. 즉 APP = Component + Component ···· 인거죠

각 컴포넌트들은 하나의 독립된 개체로 존재하며 각자의 역할을 수행합니다. 또한 컴포넌트들은 Intent라는 일종의 메시지 객체를 사용하여 상호 통신을 합니다. 

안드로이드 3.0(API Level11)부터는 프래그먼트가 추가되었습니다. 프래그먼트는 안드로이드 뷰, 4대 구성 요소로 보기에도 어렵습니다. 하지만 안드로이드 애플리케이션의 핵심 컴포넌트로 보일 정도의 높은 활용이 이루어지고 있습니다.

안드로이드의 4대 컴포넌트

안드로이드의 4대 컴포넌트에는 Activity, Service, Broadcast receiver(방송 수신자), Content provider(콘텐츠 제공자)가 있습니다.

Activity

UI 화면을 가지고 하나의 작업을 담당하는 컴포넌트로, 하나의 화면은 하나의 Activity라고 생각하면 됩니다. 모든 액티비티는 Activity라는 클래스를 상속받아 작성됩니다.

안드로이드 애플리케이션은 반드시 하나의 액티비티를 가지고 있어야 하며, 각 액티비티는 매니페스트 파일에 등록되어 있어야 합니다.

Service

백그라운드에서 실행되는 컴포넌트로, 언제 끝날지 모르는 오랫동안 수행되는 작업 또는 원격 프로세스에 대한 작업, 네트워크를 통한 데이터 통신 작업 등에 사용됩니다. 모든 서비스는 Service 클래스를 상속받아 작성됩니다.

서비스는 UI를 가지지 않으며, 한번 시작이 되게되면 애플리케이션이 종료되고, 다른 애플리케이션으로 이동해도 백그라운드에서 작업을 수행합니다.

방송 수신자(Broadcast Receiver)

시스템에서 발생하는 화면의 꺼짐, 잔여 배터리량, 사진 촬영 등의 다양한 이벤트 정보를 받고  알리기 위해 사용합니다. 방송 수신자는 Broadcast Receiver 클래스를 상속받아 작성됩니다.

일반적으로 UI를 가지고 있지 않습니다.

시스템에서 발생하는 이벤트 중 애플리케이션이 알아야 하는 상황이 발생하면 방송을 해주며, Broadcast Receiver를 통해 상황을 감지하고 적절한 작업을 수행합니다.

콘텐츠 제공자(ContentProvider)

데이터를 관리하고 다른 애플리케이션에 데이터를 제공하는 컴포넌트입니다. 파일 시스템, SQLite, 웹상에 저장되는 데이터를 "컨텐츠 제공자"를 통해 다른 애플리케이션이 조작할 수 있습니다. 컨텐츠 제공자 또한 ContentProvider 클래스를 상속받아 작성됩니다.

그리고 안드로이드 애플리케이션의 또다른 특징은 다른 프로그램 안에 들어있는 컴포넌트를 사용할 수 있다는 것 입니다. 애플리케이션에서 사용자에게 사진 촬영, 음성 녹음 등의 기능을 제공하려면 당연히 코딩이 필요하겠죠. 하지만 안드로이드에선 이러한 기능이 필요할 경우 미리 작성되어 존재하는 해당 애플리케이션을 실행시키고 반환받을 수 있습니다.

그렇다면 애플리케이션이 원하는 컴포넌트를 어떻게 찾아내는지를 알아야겠죠? 바로 intent라고 불리는 비동기 메시지 입니다. 즉 intent를 사용하여 원하는 컴포넌트를 찾아 활성화할 수 있는 것 입니다.