Android (안드로이드)

[Android] 앱의 구성요소 Components / 4대 컴포넌트 - 액티비티(Activity), 서비스(Service), 컨텐트 프로바이더(Contents Provider), 브로드캐스트 리시버(Broadcast Receiver)

Oscar:) 2022. 7. 29. 20:08

 

지난 포스팅에서 매니페스트에 대해 알아보았다.

 

이번 포스팅에서는 매니페스트가 담고 있는 정보 中,

앱의 구성요소 (Components) 에 대해 더욱 자세히 알아보자.

 

 


 

앱은 4가지 요소로 구성되어 있다고 볼 수 있다.

 

흔히 앱의 4대 구성요소, 또는 4대 컴포넌트 라고 불린다.

 

· 액티비티 (Activity)

· 서비스 (Service)

· 컨텐트 프로바이더 (Contents Provider)

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

 

 

 

액티비티 (Activity)

 

사용자와 상호작용하기 위한 요소이며, UI 화면을 담당한다.

 

*UI : user interface 의 줄임말이며, 사용자 환경을 뜻한다.

 

모든 앱은 하나 이상의 액티비티를 포함하여 구성된다.

(당연히 앱에는 사용자가 볼 수 있는 화면이 있어야 한다는 말이다)

 

 

즉, 사용자의 입장에서 하나의 액티비티는 곧 하나의 화면이다.

 

화면이 전환되면 액티비티를 전환했다고 생각하면 쉽다.

 

ex) 로그인 화면 > 메인 화면

(물론, 앱에 따라서 레이아웃 설정이나 프래그먼트 등의 변수는 존재할 수 있다)

 

 

manifest 파일의 <application> 태그 내에 <activity> 태그로서 작성되어야 하며,

manifest 파일에 선언되지 않은 액티비티는 실행되지 않는다.

(일반적인 경로로 액티비티를 추가한다면, 대부분 자동으로 작성된다)

 

 

4대 컴포넌트 중 가장 많이 사용된다.

 


 

액티비티에는 수명 주기(Life Cycle) 가 존재한다.

 

액티비티를 사용 & 관리하기 위해서는

수명 주기를 필수적으로 공부해야 하며 그만큼 중요한 내용이다.

 

따라서, 액티비티 수명 주기에 대한 내용은 따로 포스팅 하겠다.

 

 

 

 

서비스 (Service)

 

백그라운드에서 앱을 지속 실행하기 위한 요소이다.

 

별도의 UI를 가지지 않아서 사용자와의 직접적인 상호작용은 없다.

앱이 종료되어도 이미 시작된 서비스는 백그라운드에서 계속 동작할 수 있다.

 

말이 조금 어렵지만, 우리는 분명 백그라운드 동작을 경험한 적이 있다.

 

음악 앱에서 음악을 재생하고,
다른 앱으로 이동하거나 화면을 잠금하여도 음악이 계속 재생된다.

전화 앱을 켜놓지 않은 상태에서도,
백그라운드에서 동작 중이기 때문에 전화를 받을 수 있다.

 

등등 알고보면 백그라운드 기능을 많이 사용해 보았던 것이다.

 

 

내가 만들 앱에 반드시 백그라운드에서 동작해야 할 기능이 있다면,

manifest 파일의 <service> 태그로 작성해 주어야 한다.

 

 

 

 

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

 

앱 밖에서 일어나는 이벤트를 앱에 전달해주는 구성 요소이며,

현재 실행중이지 않은 앱에서도 이벤트를 전달해준다.

 

 

배터리가 부족할 때 발생하는 알림 이벤트,

상태 표시줄에 알림으로 문자 메시지가 오는 등

 

디바이스 자체적인 시스템에서 발생하며,

별다른 UI를 사용하기보다는, 대부분 상태 표시줄 알림으로 발생한다.

 

 

하지만, 브로드캐스트 리시버는 이벤트를 확인하는 기능만 담당할 뿐이다.

 

우리는 브로드캐스트 리시버가 확인한 이벤트를 알리기 위해서

상태 표시줄 알림, 토스트 메시지 등으로 직접 구현해 주어야 한다.

 

 

manifest 파일의 <receiver>태그로 작성해 주어야 한다.

 

 

 

 

컨텐트 프로바이더 (Content Provider)

 

앱 내의 데이터를 공유하기 위한 구성요소이다.

 

A앱에서 B앱의 데이터를 필요로 할 때,

직접 데이터를 가져올 수는 없다.

 

앱은 Content Provider에만 접근하며 필요한 데이터를 얻어올 수 있다.

 

 

예를 들어,

카카오톡 앱에서 연락처 앱에 접근하여 데이터를 가져오려고 할 때,

Content Provider가 연락처에 접근할 수 있게끔 해주는 것이다.

 

 

데이터를 가져오는 것 이외에도

Content Provider가 허용할 경우, 데이터를 수정할 수도 있다.

 

 

표준화된 인터페이스를 제공한다는 특징이 있다.

(다양한 앱에서 갤러리 앨범에 접근하여도, 앨범 UI의 틀은 일정하다.)

 

 

manifest 파일의 <provider> 태그로 작성해 주어야 한다.

 

 

 


 

 

 

이번 포스팅에서는 앱의 4대 컴포넌트에 대해 알아보았다.

 

이 내용을 공부하고 나서부터,

평소 휴대폰의 앱을 보는 시각이 달라지게 된 것 같다.

 

아는 만큼 보인다는 말은 정말 무서운 것 같다.