본문 바로가기
공부/Android

Android - Android의 4대 컴포넌트 완전 정복

by hhhello 2024. 6. 13.

컴포넌트(Component)는 Android앱 개발의 핵심이다.

앱 개발의 전반적인 구조를 알려면 컴포넌트를 알아야 한다. 오늘은 이런 컴포넌트가 뭐하는 친구들인지 알아보자.

컴포넌트의 정의

컴포넌트. 단어 그 자체로 요소이다. Android앱은 이런 컴포넌트(요소)들로 구성이 된다.

이런 너무나 추상적 컴포넌트라는 녀석을 Java와 Kotlin 코드에서는 클래스로 구현을 할 수 있다. 즉, 하나의 클래스가 하나의 컴포넌트가 될 수 있다는 뜻이다.

 

모든 클래스가 컴포넌트인 것은 아니다.

이걸 이해하기 위해 생명주기라는 것을 알아야 한다.
쉽게 말해 생명주기는 사용자가 앱을 켜고 끄고 다시 돌아오고 이런 상태를 말한다.
컴포넌트 클래스는 Android의 생명주기를 따라간다.
하지만 일반 클래스는 개발자가 그 생명주기를 관리한다.

 

Android 4대 컴포넌트

액티비티(Activity)

UI. 화면을 구성하는 컴포넌트이다. 일반적으로 앱이 실행되면 액티비티에서 출력한 내용이 표시된다.

 

서비스(Service)

앱을 켜지 않았을때도 동작되는 컴포넌트. 백그라운드 작업이 가능하다는 말이다. 액티비티처럼 화면 출력 기능은 없다. 화면과 관계없이 그저 백그라운드에서 묵묵히 네트워크, 스케쥴링 등을 한다.

 

콘텐츠 프로바이더(Content Provider)

이름에 답이 다 있다. 내용 제공자. 앱에 대한 내용을 제공한다.
A앱에서 프로필 사진을 바꾸려 한다. 그때 갤러리나 카메라같은 ‘다른 앱’을 사용해야 하는데 이때 콘텐츠 프로바이더를 사용하여 데이터를 주고 받는다.

 

브로드캐스트 리시버(Broadcast Receiver)

이것도 이름에 답이 다 있다. 방송 수신 하는 것.
시스템 이벤트가 발생할 때 실행되게 하는 컴포넌트이다.
화면에서 발생하는 이벤트가 아니라 ‘휴대폰이 켜졌을 경우’, ‘배터리가 방전인 경우’등의 이벤트를 수신 받는다.

 

컴포넌트에 대해 더 구체적으로 알아보자

컴포넌트 구성하기

그럼 이런 컴포넌트로 구체적으로 어떻게 엡을 구현할까?
사실 이 모든 컴포넌트들을 다 구현할 필요는 없다. 앱에서 화면만 보여줄 것이라면 액티비티로도 앱을 개발하는데 충분하다.
화면이 보여질 필요가 없는 경우에는 서비스나 브로드캐스트 리시버와 같은 컴포넌트를 사용하여 앱을 만들수도 있다.
정해진 규칙은 없다.

이제 컴포넌트의 특징들을 좀 알아보자

 

컴포넌트는 독립적이다

A와 B라는 두 액티비티가 있다고 가정하자.
그리고 A안에 있는 버튼을 클릭하면 B화면으로 넘어간다고 하자.
이때 A는 B를 직접 참조하는 게 아닌 ‘안드로이드 시스템’에게 ‘B화면으로 넘어가주세요~’하고 의뢰를 한다.
이렇게 하면 액티비티 즉 컴포넌트끼리 종속되지 않고 독립적으로 실행될 수 있다.

 

앱의 실행 시점은 다양하다

컴포넌트는 독립적으로 실행될 수 있기 때문에 앱의 실행 시점이 다를 수 있다.
카톡 알림을 클릭하면 채팅방 화면으로 바로 넘어가지 않나.
그래서 다른 프로그램과는 달리 main함수의 개념도 없다고 표현하기도 한다.