[Android] 4대 컴포넌트

[Android] 4대 컴포넌트

img

컴포넌트(component)란?

  • 컴포넌트(component)란 여러 개의 프로그램 함수들을 모아 하나의 특정한 기능을 수행할 수 있도록 구성한 작은 기능적 단위를 말한다.
  • 컴포넌트를 이용하면 소프트웨어 개발을 마치 레고(Lego) 블록을 쌓듯이 조립식으로 쉽게 할 수 있다.
  • 모듈(module)이라고도 불린다.

안드로이드 4대 컴포넌트

이제 본론으로 들어가서 안드로이드를 구성하는 4대 컴포넌트를 알아보자!

4대 컴포넌트
  • Activity : 화면을 구성
  • Service : 백그라운드 작업에 용이함, 화면 없음
  • Broadcast Receiver : 앱 or 기기가 발송하는 방송을 수신함
  • Content Provider : DB, File, Network의 데이터를 다른앱에 공유함
각 컴포넌트들의 특징
  • 독립적인 형태로 존재한다.
  • 고유한 기능을 수행한다.
  • 인텐트를 통해 서로 상호작용한다.
  • 시스템 or 사용자가 앱에 들어갈 때의 진입점을 나타낸다.
공식문서의 표현
  • ‘Each component is an entry point through which the system or a user can enter your app (각 컴포넌트는 시스템이나 사용자가 앱에 진입할 수 있는 진입점이다)’

1. Activity

Activity는 실제 화면을 보여주는 컴포넌트이다. Activity는 사용자에게 UI가 있는 화면을 제공하며 사용자와 상호작용을 담당하는 인터페이스이다.

Activity의 특징
  • 2개 이상의 Activity가 동시에 보여질 순 없다.
  • Intent를 통해 다른 Activity를 호출할 수 있다.
  • Application은 1개 이상의 Activity를 포함한다.

Activity는 사용자의 화면에 보여지는 인터페이스이고 디스플레이, 입력 등 사용자와의 상호작용을 수행한다. 또한 다른 액티비티와 의 상호작용 또한 가능하다.

2. Service

Service는 화면에 보이지 않는 컴포넌트이며 백그라운드에서 작업을 처리하기 위해 실행되는 프프로세스이다.

Service의 특징
  • Activity와는 달리 화면UI가 없다.
  • 메인 스레드에서 동작한다.
  • 시작된 서비스는 APP이 종료되어도 백그라운드에서 계속 동작한다.
  • 네트워크를 통해 데이터를 가져올 수 있다.
Service의 유형
  • Started Service
    • Foreground Service
    • Background Service
  • Bound Service

2-1. Foreground Service

일부분이 사용자에게 보여지는 작업을 수행하는 서비스로 melon을 예로들면 상단의 바를 내렸을 때 나오는 음악의 정보를 확인할 수 있고 컨트롤이 가능한 창 정도로 볼 수 있겠다.

2-2. Background Service

사용자에게 보이지 않는 작업을 수행하는 서비스로 용량이 큰 파일을 압축 및 업로드 등 사용자들에게 보여지지 않는 기능들에 이용한다.

2-3. Bound Service

바인드된 서비스란 클라이언트-서버 인터페이스 안의 서버를 말한다. 이를 사용하면 구성요소를 서비스에 바인딩하고, 요청을 보내고, 응답을 수신하며, 프로세스 간 통신(IPC)을 실행할 수 있다.

즉 Service는 백그라운드 태스크를 수행하고 대부분 사용자에게 노출될 필요가 없는 동작을 수행한다.

3. Broadcast Receiver

Broadcast는 말 그대로 ‘방송하다’ 라는 의미이다. 그렇다면 Broadcast Receiver란 시스템이 방송한 정보를 수신하고 해당 상황에 대한 동작을 정의할 수 있는 컴포넌트라고 볼 수 있다.

Broadcast Receiver 특징
  • APP에서 발생하는 이벤트를 수신받아 리시버로 처리한다.
  • 대부분의 Broadcast Receiver는 UI가 없다.
  • 동적 Receiver ,정적 Receiver로 나뉜다.
    • 동적 Receiver : Context가 유효할 동안 동작하며, 사용 시 registerReceiver()로 등록하고 사용하지 않을 경우, unregisterReceiver()로 등록을 해제해야 한다.
    • 정적 Receiver : Manifest에 리시버를 등록하면 자동등록되며, 한번 등록시 해제할 수 없다.

4. Content Provider

Content Provider앱이 자체적으로 저장된 데이터나, 다른 앱들이 저장한 데이터에 대한 액세스 권한을 관리하도록 도와주고, 다른 앱들과 어떤 데이터를 공유할 수 있도록 해주는 구성요소이다.

Content Provider데이터 액세스 권한에 대한 세분화된 제어 기능을 제공한다. 같은 앱 내에서만 Content Provider 에 액세스할 수 있도록 제한하거나, 다른 앱에서도 액세스할 수 있도록 풀어주는 등의 다양한 구성이 가능하다.

Content Provider 특징
  • SQLite DB / Web / 파일 입출력 등을 통해 데이터를 관리한다.
  • 용량이 큰 데이터들을 공유하는데 주로 사용한다.
  • 데이터의 Read, Write의 권한이 허용되어야 접근이 가능하다.
  • Content Provider로 접근한 데이터의 결과값은 Content Resolver로 받으며, query읽기/insert/update/delete 작업이 가능하다.

© 2023. All rights reserved.

by SoftyChoo