본문 바로가기
개발/안드로이드

안드로이드 4대 컴포넌트

by EPdev 2020. 6. 30.
728x90

안드로이드에는 4대 컴포넌트라고 하는 게 있다. (component = 구성요소)

뭐 컴포넌트들에 대한 정보는 안드로이드 개발문서를 참고하고

여기선 개략적으로 얘네가 뭔지만 알아보자.

 

4대 컴포넌트 - Activity, Service, Broadcast Receiver, Content Provider

 

1. Activity

이전 글에서 설명했던 내용이다. 안드로이드 개발할 때 거의 대부분을 여기서 작업한다고 보면 된다.

2020/06/05 - [개발/안드로이드] - 안드로이드, 플랫폼, 액티비티 - Android, Platform, Activity

다시 보자면, 내가 보고 있는 앱의 화면이라고 생각되기도 한다.

하지만, Activity도 결국 클래스(객체)로 만들어져 있다.

결국 UI를 관리/제어하는 객체라고 볼 수 있다.

 

안드로이드에서 화면을 만들 때 XML 파일로 작업을 하는데 Activity는 이 XML 파일을 보여주고

유저의 행동에 따라 그 반응을 해주는 것이다.

* 유의해야 할 것이 있는데, 보통 앱에서 "다른 화면으로 전환한다!" 이러면 새로운 Activity가 뜨는 것이다.

** 아닌 경우도 있지만 우선 Activity에 대해서 파악하고, 이건 더 깊이 공부했을 때 알아보자.

 

2. Service

쉽게 접근하자면 UI가 없는 Activity다. UI에 영향을 미치지 않는 뭔가 해야할 때 사용한다.

예를 들어, 음악 앱이 있다. 이 앱에서 음악을 재생한다고 치자.

만약 Service가 없다면 Activity에서 음악을 재생하고 있을 것이다.

근데 휴대폰이 잠금 상태에 들어가거나, 다른 앱을 켜거나, 다른 화면으로 이동하면

음악을 재생하는 Activity는 보통 종료된다. 그럼 음악을 들을 수 없게 되는 것이다.

 

이런 문제를 해결해주려고 Service라는 놈이 나왔다. 화면에 상관없이 백그라운드에서 계속 실행되게 해주는 것이다.

물론 Service를 실행하려면, Activity에서 Service를 실행하라고 알려줘야 하는데 이건 구현할 때 알아보자.

중요한 건 백그라운드에서 실행되는 어떤 것이다.

 

예를 들어, 다운로드나 업로드도 Service에서 처리할 수 있겠다. 다운로드할 때 화면이 멈춰있으면 안 되니까!

어? 잠깐.. 이거 Thread랑 비슷한 느낌인데? 맞다! Service랑 Thread는 비슷한 느낌이라 같이 공부하면 좋다.

그리고 어느 때에 Thread를 쓸지, Service를 쓸지 결정하는 것도 중요하다.

* 이건 다음에 Service, Thread, AsyncTask, Handler 등과 같이 알아보자.

 

3. Broadcast Receiver

얘는 위의 둘과 달리 이름에서 대충 역할을 유추할 수 있다.

Broadcast : 방송, Receiver : 수신자 => 방송을 받는 놈?

그렇다. Broadcast Receiver는 어떤 내용을 받을 수 있는 놈이다. 해당 앱이 실행상태가 아니더라도 말이다.

예를 들어, 스마트폰을 사용하다가 배터리가 부족하다는 알림이 뜬다던지, 사진을 캡처했다고 뜨는 알림이든지에 사용된다.

알림이 많이 보이는데... 그것도 맞다. 알림은 Broadcast Receiver로 구현할 수 있다.

구현 방법은 구글에 찾아보시고...(Android Notification)

내가 음악 파일을 다운로드 받을 때 Service에서 다운로드 작업을 하고, 이게 끝나면 Broadcast를 통해 다운로드가 완료되었다는 것도 구현할 수 있다.

이런 놈이란 것만 알고 가자.

 

4. Content Provider

얘도 한번 이름에서 의미를 찾아보자.

Content : 내용물, Provider : 제공자 => 어떤 내용을 보내는 놈?

그렇다! Content Provider는 데이터를 제공하는 놈이다. 사실 나도 이건 안 써봐서 잘은 모른다.

하지만, 공부한 내용을 보면 다른 앱이 가진 데이터를 가져온다거나, 다른 앱의 기능을 실행해서 그 내용을 가져와야 할 때 사용할 수 있다고 한다.

예를 들어, 내가 카메라로 사진을 찍어야 하는데 카메라라는 게 안드로이드에 기본 앱으로 내장되어 있으니,

내 앱에서 카메라를 구현할 필요가 없이 그 앱을 실행시켜 사진을 찍고 그 사진을 내 앱으로 가져온다는 것!

또는 안드로이드에 내장되어 있는 SQLite를 사용하면 데이터베이스에 쿼리를 날려서 값을 가져오는 것!

뭐 이런 기능이 필요할 때 사용한다고 한다.

* Tip. 보통 화면을 전환한다거나, 어디서 데이터를 가져올 때 Intent라는 놈을 쓰는데 이 Intent는 용량에 한계가 있다. 누군가 테스트해봤을 때 500KB 정도라고 했었다. 그래서 Content Provider를 사용하나?

 

이로써, 안드로이드 4대 컴포넌트들에 대한 정리를 마치겠다. 정리하면서 느낀 건 아직 공부해야 할 게 산더미다!

728x90

댓글