안드로이드 4대 컴포넌트

김재현·2025년 3월 6일

컴포넌트(Component)란?

  • 먼저 컴포넌트란 독립된 모듈로, 사용자 인터페이스의 기본적인 형태를 말합니다. 즉, 안드로이드에서의 컴포넌트란 안드로이드 앱을 구성하는 필요한 4개의 요소를 뜻합니다. 독립된 모듈이기 때문에 재사용이 가능하고 추후에 교환될 수도 있습니다.

그럼 안드로이드의 4대 컴포넌트는?

  • 안드로이드의 4대 컴포넌트에는 액티비티(Activity), 서비스(Service), 방송 수신자(BroadCast Receiver), 콘텐츠 제공자(Content Provider)가 있습니다. 각 컴포넌트는 독립적인 형태로 존재하며 인텐트(Intent)를 통해서 상호작용합니다.

각 컴포넌트는 어떤 역할을 하나요?

액티비티 (Activity)

  • 액티비티는 사용자가 Application과 상호작용하며 실제로 사용자에게 보이는 화면을 의미합니다. Application에 화면이 없다면 사용자와 상호작용 할 수 없다는 의미와 같으므로 반드시 하나의 액티비티는 존재해야 합니다.
  • 다른 Application의 액티비티 역시 인텐트를 통해 불러올 수 있으며 액티비티는 생명주기(Life Cycle) 관련 메서드를 재정의하여 원하는 기능들을 구현할 수 있습니다.
  • 2개 이상의 액티비티를 동시에 Display 할 수 없고 1개 이상의 View 또는 ViewGroup을 포함합니다.

서비스 (Service)

  • 서비스는 액티비티처럼 사용자와 직접적으로 상호작용하는 요소는 아닙니다.
    백그라운드(Background)에서 어떠한 작업을 처리하기 위해서 서비스를 사용하는데, 만약 Application이 종료되어도 백그라운드(Background)에서 동작하는 컴포넌트가 서비스이다.
  • 대표적으로 음악 앱과 타이머 앱처럼 Background에서 계속 음악이 재생되거나 타이머가 작동되기 때문에 이 기능은 서비스에 해당됩니다.
  • 서비스 같은 경우가 사용자의 인터페이스(UI, 화면)를 방해하지 않고 눈에 보이지 않는 곳에서 작업을 처리하기 때문에 별도의 스레드(Thread)에서 동작한다고 생각할 수 있지만, 서비스는 엄연히 메인 스레드(Main Thread) 에서 동작하기 때문에 서비스 내에서 별도의 스레드를 생성하여 작업을 처리해야 합니다.
  • 서비스는 네트워크와 연동이 가능하고 별도의 UI를 가지지 않으며 액티비티와 서비스는 UI스레드라고 불리는 동일한 애플리케이션 스레드(Thread)로 실행됩니다.

방송 수신자 (BroadCast Receiver)

  • 방송 수신자 (BroadCast Receiver)는 안드로이드 OS로부터 발생하는 각종 이벤트와 정보를 받아와 핸들링하는 컴포넌트입니다. 간단하게 말하면 안드로이드 시스템이나 다른 앱으로부터 전송되는 브로드캐스트 메시지를 수신하는 컴포넌트입니다.
  • 사용자 안드로이드 디바이스의 시스템 부팅시 앱 초기화, 네트워크 끊김 등 특수한 이벤트에 대한 처리나 배터리 부족 알림, 문자 수신과 같은 정보를 받아 처리를 해야 할 필요가 있을 때 동작합니다. 즉, 안드로이드 OS에서 메신저 앱 또는 문자 메시지가 오면 모든 앱에 메시지에 대한 정보를 방송(BroadCast)을 합니다. 이 메시지를 받기 위해 브로드캐스트 리시버(BroadCast Receiver)를 구현하면 되고 해당 정보가 오면 특정 이벤트를 처리할 수 있습니다.
  • 브로드캐스트 리시버(BroadCast Receiver)는 대부분 UI를 가지지 않으며 안드로이드 디바이스의 특수한 상황에 대응하기 위해 사용됩니다.
-  Broadcast (브로드 캐스트란)?
 브로드 캐스트(Broadcast)는 컴퓨터 네트워크에서 전송되는 메시지를 일방적으로 모든 연결된 장치에게 보내는 통신 방식입니다.. 이 방식은 단일 송신자가 여러 수신자에게 동시에 메시지를 보낼 수 있도록 합니다.

콘텐트 제공자 (Content Provider)

  • 콘텐트 제공자(Content Provider)는 데이터를 관리하고 다른 애플리케이션의 데이터를 제공하는데 사용되는 컴포넌트입니다. 특정한 애플리케이션이 사용하고 있는 데이터베이스(DB)를 공유하기 위해 사용하며 애플리케이션 간의 데이터 공유를 위해 표준화된 인터페이스를 제공합니다.
  • 외부 애플리케이션이 현재 실행 중인 애플리케이션 내에 있는 데이터베이스(DB)에 함부로 접근하지 못하게 할 수 있으면서 나 자신이 공개하고 공유하고 싶은 데이터만 공유할 수 있도록 도와줍니다.
  • 작은 데이터들은 인텐트(Intent)로 애플리케이션끼리 데이터를 서로 공유가 가능하지만 콘텐트 제공자(Content Provider)는 음악 또는 사진 파일 등과 같이 용량이 큰 데이터들을 공유하는데 적합합니다.
  • 데이터베이스에서 흔히 사용되는 CRUD(Create, Read, Update, Delete) 원칙을 준수합니다.

.
.
.

인텐트 (Intent)

  • 인텐트란 애플리케이션 컴포넌트 간에 작업 수행을 위한 정보를 전달하는 역할을 하며 통신수단이라고 보면 됩니다. 인텐트를 가장 많이 사용하는 예로는 액티비티 간의 화면 전환(이동)이 있습니다.
  • 서로 독립적으로 동작하는 4가지 컴포넌트들 간의 상호 통신을 위한 장치로 컴포넌트에 액션(Action), 데이터(Data) 등을 전달합니다. 또한 인텐트(Intent)를 통하여 다른 애플리케이션의 컴포넌트를 활성화시킬 수 있습니다.

0개의 댓글