안드로이드 앱에는 기본 요소라고 불리는 여러 요소들이 존재합니다. 그중
Android 4대 컴포넌트
라고 불리는 요소들은 면접에서도 자주 나올 정도로
안드로이드 앱을 개발하면서 굉장히 중요하다는 것을 알 수 있습니다.
안드로이드에서는 아래 유형들을 안드로이드 4대 컴포넌트라고 부릅니다.
- 액티비티 (Activity)
- 서비스 (Service)
- 브로드캐스트 리시버(Broadcast Receiver)
- 콘텐츠 제공자(Content Provider)
각 유형들은
안드로이드 앱에서 뚜렷한 목적을 수행하고,
나름의 수명 주기가 있어 구성 요소의 생성 및 소멸 방식을 정의합니다.
또한 사용자나 시스템이 앱에 진입할 수 있는 진입점입니다.
조금 더 자세하게 하나씩 알아봅시다.
액티비티(Activity)
액티비티는 사용자와 상호작용을 하기 위한 진입점입니다.
App에서 액티비티를 구성하기 위해선 Activity Class를 상속받아,
생명주기(Life Cycle) 관련 메서드들을 사용할 수 있습니다.
한 화면을 구성하는데에 사용되기에 하나 이상의 View 또는 ViewGroup을 포함해야 합니다.
또한 한 번에 여러 액티비티를 화면에 띄울 수는 없습니다.
앱을 구성하기 위해선 반드시 하나 이상의 액티비티를 구성해야 합니다.
그리고 인텐트(Intent)를 통해 해당 애플리케이션뿐만 아니라 다른 애플리케이션의 액티비티를 호출할 수 있습니다.
서비스(Service)
서비스는 여러 가지 이유로 백그라운드에서 앱을 계속 실행하기 위한 다목적 진입점입니다.
사용자에게 보이는 요소가 아닌 백그라운드에서 실행되는 요소입니다.
오랫동안 실행되는 작업을 수행하거나 원격 프로세스를 위한 작업을 수행합니다.
예를 들면 다른 앱을 키더라도 백그라운드에서 노래를 재생한다던가,
백그라운드 다운로드를 할 수도 있습니다.
어플리케이션이 종료되어도 이미 시작 된 서비스를 백그라운드에서 동작합니다.
네트워크와 연동이 가능합니다.
방송 수신자(Broadcast Receiver)
방송 수신자는 안드로이드 OS로부터 발생하는 이벤트와 정보를 받아와 핸들링해주는 유형입니다.
예를 들면 배터리가 충전, 문자 수신, 네트워크 연결 해제 등의 상황에서 알림을 받고, 이를 방송해줍니다.
방송 수신자는
오레오 버전을 기점으로 이전 버전들은 앱이 꺼져도 정상적으로 브로드캐스트가 수행하였지만,
이후 버전부터는 앱이 실행 중이 아닐 때는 브로드캐스트 동작을 수행하지 않습니다.
정리하자면
대부분 UI를 가지지 않고,
디바이스의 특수한 상황에 대처하기 위해 사용됩니다.
콘텐츠 제공자(Content Provider)
콘텐츠 제공자는 파일 시스템, SQLite 데이터베이스, 웹상이나 앱이 액세스할 수 있는
다른 모든 영구 저장 위치에 저장 가능한 앱 데이터의 공유형 집합을 관리합니다.
조금 말이 어려울 수 있는데, 쉽게 이야기하자면 A와 B 앱 사이에 데이털르 공유하는 느낌이다.
예를 들면 사진첩에 있는 사진들을 가져오거나
연락처에 있는 연락처 정보를 가져와야하는 경우 등에서 사용된다.
콘텐츠 제공자에서는 CRUD 동작을 기본으로 하고 있기에,
데이터베이스가 주로 사용됩니다.
마무리
위의 4가지 유형들은 안드로이드 앱을 개발하며
면접에서도 자주 나오고, 해당 기능들을 구현해야하는 상황들이 종종 옵니다.
따라서
안드로이드 앱을 구성하며 기본이 되는 요소들이기에
어느정도 익혀놓은 것이 좋을 듯 합니다.
'Android' 카테고리의 다른 글
[Android] - View와 ViewGroup란 무엇일까 (0) | 2023.02.11 |
---|---|
안드로이드의 시작 상태 - app startup time (Cold, Warm, Hot) (0) | 2023.02.07 |
Can't determine type for tag '<macro name="m3_comp_assist_chip_container_shape">?attr/shapeAppearanceCornerSmall</macro>' (0) | 2023.02.04 |
DataBinding 사용하기 (0) | 2023.01.26 |
Non-body HTTP method cannot contain @Body. 오류 해결 (0) | 2022.12.30 |