[Android] 4대 컴포넌트
컴포넌트(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에 리시버를 등록하면 자동등록되며, 한번 등록시 해제할 수 없다.
- 동적 Receiver : Context가 유효할 동안 동작하며, 사용 시
4. Content Provider
Content Provider 는 앱이 자체적으로 저장된 데이터나, 다른 앱들이 저장한 데이터에 대한 액세스 권한을 관리하도록 도와주고, 다른 앱들과 어떤 데이터를 공유할 수 있도록 해주는 구성요소이다.
Content Provider 는 데이터 액세스 권한에 대한 세분화된 제어 기능을 제공한다. 같은 앱 내에서만 Content Provider 에 액세스할 수 있도록 제한하거나, 다른 앱에서도 액세스할 수 있도록 풀어주는 등의 다양한 구성이 가능하다.
Content Provider 특징
- SQLite DB / Web / 파일 입출력 등을 통해 데이터를 관리한다.
- 용량이 큰 데이터들을 공유하는데 주로 사용한다.
- 데이터의 Read, Write의 권한이 허용되어야 접근이 가능하다.
- Content Provider로 접근한 데이터의 결과값은 Content Resolver로 받으며, query읽기/insert/update/delete 작업이 가능하다.