안드로이드 4대 컴포넌트 란?
컴포넌트란 구성요소를 의미한다.
다시 말해서 안드로이드 4대 컴포넌트란 안드로이드 앱을 구성하는데 필요한 4개의 요소를 의미한다.
안드로이드 4대 컴포넌트에는 액티비티(Activity), 서비스(Service), 방송수신자(Broadcast Receiver), 콘테트 제공자(Content Provider)가 있다.
Android 앱의 필수적인 구성요소로, 각각은 시스템이나 앱에 들어올 수 있는 진입점이다.
특징
- 각 컴포넌트는 독립적으로 존재한다.
- 각 컴포넌트는 고유의 기능을 수행한다.
- 각 컴포넌트는 인텐트를 통해서 서로 상호작용한다.
1. 액티비티(Activity)
사용자와 상호작용을 담당하는 인터페이스입니다.
앱을 실행을 할 때는 앱을 전체적으로 호출하는 것이 아니라 앱의 액티비티를 호출한다.
액티비티는 생명주기(Life Cycle) 관련 메서드들을 재정의하여 원하는 기능들을 구현할 수 있습니다.
- 액티비티는 사용자가 Application과 상호작용하며 실제로 사용자에게 보이는 화면을 의미합니다.
- 액티비티는 인텐트(Intent)를 통해 다른 Application의 액티비티를 호출할 수 있습니다.
- 2개이상의 액티비티를 동시에 Display 할 수 없습니다.
- 1개 이상의 View(텍스트,버튼,이미지) 또는 ViewGroup(레이아웃)을 포합합니다.
- 반드시 Application에는 하나 이상의 액티비티가 있어야 합니다.
- 액티비티 내에 프래그먼트(Fragment)를 추가하여 화면을 분할시킬 수 있습니다.
2. 서비스(Service)
서비스는 액티비티와 반대로 사용자와 직접적으로 상호작용하는 요소는 아니다.
다만, 백그라운드(BackGround)에서 어떠한 작업을 처리하기 위해서 주로 사용한다.
- Application이 종료되어도 BackGround에서 동작하는 컴포넌트이다.
- 음악 앱을 예시로 들 경우 앱을 종료 해도, 음악은 계속 재생되며, 타이머의 앱의 경우도 타이머 앱을 종료할 경우 타이머는 계속 흘러간다. 즉, 애플리케이션이 종료되어도 이미 시작된 서비스는 백그라운드에서 계속 동작한다.
- 포그라운드 서비스 : 사용자에게 잘 보이는 작업. 포그라운드 서비스의 경우, 반드시 알림을 표시해야 하며, 사용자가 앱과 사용작용하지 않을 때도 계속 실행됨.
- 백그라운드 서비스 : 사용자에게 직접 보이지 않는 작업.
- 네트워크(Network)와 연동이 가능하다.
- 액티비티와 서비스는 Ui스레드라고 불리는 동일한 애플리케이션 스레드로 실행됩니다.
- 앱이 API 26이상을 대상으로 할 경우
- 즉시 실행해야하는 작업 : Work Manager
- 지연 작업 : Alarm Manager
- 바인드 서비스 : 앱 컴포넌트가 bindService를 호출해 서비스를 호출하면 서비스가 바인딩 됨. 바인딩 된 서비스는 클라이언트-서버 인터페이스를 제공해 서비스와 상호 작용함. 여러개가 한꺼번에 바인딩 될 수 있고, 바인딩 된 컴포넌트가 모두 종료 되면, 서비스도 종료됨.
3. 방송 수신자(Broadcast Receiver)
방송수신자는 안드로이드 OS로부터 발생하는 각종이벤트와 정보를 받아 핸들링하는 컴포넌트이다.
안드로이드 디바이스의 특수한 상황에 대응하기 위해서 사용된다. 여기서 말하는 특수한 상황이란,
시스템 부팅시 앱 초기화, 네트워크 끊김같은 특수한 상황에대한 처리 그리고 배터리 부족 알림, 문자수신같은 정보를 받아서 하는 처리이다.
- 거의 대부분 Ui를 가지지 않는다. 수신기를 통해 디바이스 상황을 감시하다가 이벤트가 발생하면 해당 이벤트에 맞게 정의한 작업들을 수행하는 역할을 한다.
- 특정한 상황을 제외하고는 브로드캐스트는 시스템에서 시작된다.
4. 콘텐트 제공자(Content Provider)
콘텐트 제공자는 데이터를 관리하고 다른 Application의 데이터를 제공하는데 사용되는 컴포넌트이다.
특정한 Application이 사용하고 있는 DB를 공유하기 위해 사용하며 애플리케이션 간의 데이터 공유를 위해 표준화된 인터페이스를 제공합니다.
- SQLite DB/ Web/ 파일 입출력 등을 통해서 데이터를 관리합니다.
- 외부 어플리케이션이 현재 실행중인 Application 내에 있는 데이터베이스에 함부로 접근하지 못하게 할 수 있으면서 나 자신이 공개하고 공유하고 싶은 데이터만 공유할 수 있도록 도와줍니다.
- 작은 데이터들은 인텐트(intent)로 Application끼리 데이터를 서로 공유가 가능하지만 콘테트 프로바이더는 음악 또는 사진 파일 등과 같이 용량이 큰 데이터들을 공유하는데 적합합니다.
- 프로바이더는 데이터의 Read, Write에 대한 퍼미션이 있어야 Application에 접근이 가능합니다.
- 데이터베이스에서 흔히 사용되는 CRUD 원칙을 준수한다.
'Android > Study' 카테고리의 다른 글
[Android] View가 그려지는 순서 (0) | 2024.01.13 |
---|---|
[Android] Activity 생명 주기(Life Cycle) (0) | 2024.01.13 |
[Android] 졸업 프로젝트 개요 (0) | 2024.01.07 |
[Android] RelativeLayout(상대적 레이아웃) 정리 (0) | 2023.12.23 |
[Android] LinearLayout(선형 레이아웃) 정리 (0) | 2023.12.23 |