본문 바로가기
Native App/👽Android

Android 4대 컴포넌트

by yewoneeee 2024. 7. 26.

안드로이드 앱 아키텍처의 가장 큰 특징은 컴포넌트 기반이라는 것

 

컴포넌트(Component)란?

앱의 구성 단위로, 컴포넌트 여러 개를 조합해 하나의 앱을 만듦

안드로이드 앱에서 컴포넌트는 클래스의 모습을 하고 있음

그렇다고 앱에서 만든 모든 클래스가 컴포넌트는 아니다

 

안드로이드 컴포넌트 종류

- Activity

- Service

- Content Provider

- Broadcast Receiver

 

각각의 컴포넌트는 고유의 기능을 가지고 있고, 인텐트를 통해 서로 상호작용이 가능하다

하나씩 알아보자!

 

Activity

사용자와 상호작용하는 진입점으로, 사용자 인터페이스가 있는 단일 화면을 말함

액티비티는 시스템과 앱의 주요 상호작용을 돕는 역할을 함

컴포넌트끼리는 인텐트를 통해 상호작용하기 때문에, 인텐트를 통해 다른 액티비티를 호출할 수 있음

하나 이상의 View, ViewGroup을 포함하고 있어야 하고,

액티비티 내에 fragment를 추가해 화면을 분할할 수 있다.

 

 

Service

서비스는 여러 가지 이유로 앱을 백그라운드에서 계속 실행하기 위한 범용 진입점으로, 장기 실행 작업을 실행하거나 원격 프로세스의 작업을 실행하기 위해 백그라운드에서 실행되는 구성요소임

서비스는 사용자 인터페이스를 제공하지 않는다. 즉, 사용자와 직접적으로 상호작용하지는 않음

 

서비스는 사용자가 다른 앱에 있는 동안 백그라운드에서 음악을 재생하거나, 사용자와 액티비티의 상호작용을 차단하지 않고 네트워크를 통해 데이터를 가져올 수 있다

액티비티와 같은 구성요소는 서비스를 시작 및 실행하거나 서비스에 바인딩하여 상호작용하도록 할 수 있음

 

서비스는 두 가지 유형으로 나뉜다.

1. 시작된 서비스

시작된 서비스는 작업이 완료될 때까지 서비스를 계속 실행하도록 시스템에 지시함

예) 일부 데이터를 백그라운드에서 동기화하거나, 사용자가 앱을 종료한 후에도 음악을 재생

 

2. 바인드된 서비스

일부 다른 앱(또는 시스템)이 서비스를 사용하고 싶다고 밝혔기 때문에 실행됨

클라이언트 - 서버 인터페이스 안의 서버 역할을 맡은 컴포넌트로 이를 사용하면 서비스에 바인딩하고, 요청을 보내거나 응답을 수신이 가능하며, 프로세스 간 통신을 실행할 수 있다.

일반적으로 다른 애플리케이션 구성요소를 도울 때까지만 유지되고, 백그라운드에서 무한히 실행되지는 않음

 

 

Broadcast Receiver

앱이 시스템 전체 브로드캐스트 알림에 응답할 수 있도록 일반 사용자 플로우 외부에서 앱에 이벤트를 전달할 수 있게 하는 컴포넌트

현재 실행중이 아닌 앱에도 브로드캐스트를 전달할 수 있음

 

예를 들어, 사용자에게 예정된 이벤트에 관해 알리는 알림을 게시하도록 알람을 예약할 수 있다.

알람은 앱의 BroadcastReceiver에 전달되므로 알람이 울릴 때까지 앱의 실행을 유지할 필요가 없음

이런 것 외에도 화면이 꺼져있거나 배터리 부족, 사진 캡쳐 등을 알리는 브로드 캐스트도 있음

 

사용자 인터페이스를 표시하진 않지만, 상태 표시줄 알림을 만들어 브로드 캐스트 이벤트가 발생할 때 사용자에게 알릴 수 있음

 

 

Content Provider

콘텐츠 제공자는 파일 시스템, SQLite 데이터베이스, 웹 또는 앱이 접근할 수 있는 기타 영구 저장소 위치에 저장할 수 있는 공유된 앱 데이터 세트를 관리함. 콘텐츠 제공자가 허용하는 경우, 다른 앱은 콘텐츠 제공자를 통해 데이터를 쿼리하거나 수정할 수 있음

 

예를 들어 안드로이드 시스템은 사용자의 연락처 정보를 관리하는 콘텐츠 제공자를 제공함

적절한 권한이 있는 앱은 콘텐츠 제공자를 쿼리하여 특정 사람에 관한 정보를 읽고 쓸 수 있음

 

작은 데이터들은 인텐트로 데이터를 공유할 수 있지만, 콘텐츠 제공자는 음악이나 사진 파일과 같이 용량이 큰 데이터들을 공유할 때 사용함

 

 

컴포넌트 활성화

Intent(인텐트)라는 비동기 메시지는 4가지 컴포넌트 중 Activity, Service, Broadcast Receiver를 활성화함.

인텐트는 런타임에서 각 컴포넌트를 서로 바인딩한다.

즉, 컴포넌트가 내 앱에 속해 있는지 여부와 관계없이 다른 컴포넌트의 작업을 요청하는 메신저라고 볼 수 있음

 

Content Provider는 위 3가지와 달리 ContentResolver의 요청으로 타겟팅될 때 활성화됨.

 

정리

- Activity는 앱을 사용할 때 볼 수 있는 화면

- Service는 화면에 보이지 않는 백그라운드 작업을 처리하는 부분

- Broadcast Receiver는 시스템 단에서 발생하는 이벤트를 앱에서 받아서 처리하는 것이고

- Content Provider는 앱 간 데이터 공유를 관리하는 역할

 

 

참고

https://developer.android.com/guide/components/fundamentals?hl=ko

 

애플리케이션 기본 항목  |  Android Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 애플리케이션 기본 항목 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android 앱은 Kotlin, Java 프로그

developer.android.com

 

 

 

 

 

'Native App > 👽Android' 카테고리의 다른 글

Context란  (0) 2024.07.29
Kotlin을 사용하는 이유  (0) 2024.07.26
adb 명령어를 사용해서 안드로이드 기기 무선 페어링  (0) 2024.07.06
firebase 연동 정리  (0) 2023.01.14
web Crawling - Jsoup  (0) 2022.06.27

댓글