카테고리 없음

[Android] 4대 컴포넌트

너츠너츠 2022. 8. 7. 02:55

Android 앱은 컴포넌트로 구성되어 있으며 구성하는 구성요소로 Activity, Service, Content Provider, Broadcast Receiver가 있습니다. 이를 4대 컴포넌트라 부릅니다.

 

각 컴포넌트들은 하나의 독립된 형태로 존재하며, 정해진 역할을 수행한다. 컴포넌트들 간의 상호 통신은 Intent라는 일종의 메시지 객체를 사용하여 상호 통신을 진행합니다.

Activity

  • 사용자가 애플리케이션과 상호작용하는 UI (사용자 인터페이스 화면)을 의미합니다.
  • 안드로이드 애플리케이션은 하나 이상의 액티비티를 포함하고 있으며 액티비티는 생명주기(Life Cycle) 관련 메서드들을 재정의하여 원하는 기능들을 구현할 수 있습니다.
  • Intent를 통해 다른 애플리케이션의 액티비티를 호출할 수 있습니다.
  • 2개 이상의 액티비티를 동시에 Display 할 수 없습니다.
  • 1개 이상의 View 또는 ViewGroup을 포함합니다. (setContentView)
  • 반드시 애플리케이션에는 하나 이상의 액티비티가 있어야 합니다.
  • 액티비티 내에 프래그먼트를 추가하여 화면을 분할시킬 수 있습니다.
  • Manifest 파일에 등록되어야 합니다.

Service

  • 백그라운드에서 실행되는 구성요소로써 오랫동안 작업을 하거나 원격 작업을 수행할 경우 사용됩니다.   ex) 멜론 등의 음원 스트리밍 앱, 다른 작업을 하면서 파일을 다운로드,  화면과 별개의 타이머 실행, 네트워크 통신
  • 별도의 UI를 가지지 않습니다.
  • 액티비티와 서비스는 UI 스레드라고 불리는 동일한 애플리케이션 스레드로 실행됩니다.
  • 애플리케이션이 종료되어도 이미 시작이 된 서비스(Service)는 백그라운드에서 계속 동작합니다.

Broadcast Receiver

  • 안드로이드 단말기에서 발생하는 다양한 이벤트, 정보를 받고 반응하는 컴포넌트이다.   ex) 화면이 꺼지거나 배터리가 부족, 사진을 캡쳐하는 등의 이벤트에 대해 시스템이 브로드캐스트를 날리면 앱에서 Receiver를 통해 원하는 브로드캐스트를 수신하여 이에 맞는 처리를 가능케 합니다.
  • 앱 내에서도 LocalBroadcastManager를 통해 브로드캐스트에 담은 Intent를 보내어 다른 컴포넌트에서 수신할 수도 있습니다.
  • 거의 대부분 UI를 가지지 않습니다.
  • 안드로이드 디바이스의 특수한 상황에 대응하기 위해 사용됩니다.
  • 특정한 상황을 제외하고는 브로드캐스트는 시스템에서 시작합니다.

Content Provider

  • 데이터를 관리하고 어플리케이션간 데이터를 접근하기 위해 사용됩니다.
  • SQLite DB / Web / 파일 입출력 등을 통해서 데이터를 관리합니다. ex) 연락처 앱의 연락처 정보를 가져올 수 있고 갤러리 앱의 사진 파일을 가져오거나 외부 저장소에 파일을 저장할 수 있습니다.
  •  외부 애플리케이션이 현재 실행 중인 애플리케이션 내에 있는 데이터베이스(DB)에 함부로 접근하지 못하게 할 수 있으면서 나 자신이 공개하고 공유하고 싶은 데이터만 공유할 수 있도록 도와줍니다.
  • 작은 데이터들은 인텐트(Intent)로 애플리케이션끼리 데이터를 서로 공유가 가능하지만 콘텐츠 프로바디어는 음악 또는 사진 파일 등과 같이 용량이 큰 데이터들을 공유하는데 적합합니다.
  • 프로바이더는 데이터의 Read(읽기), Write(쓰기)에 대한 퍼미션이 있어야 어플리케이션에 접근이 가능합니다.
  • 데이터베이스에서 흔히 사용되는 CRUD(Create, Read, Update, Delete) 원칙을 준수합니다.

Intent

  • 독립적으로 동작하는 4대 컴포넌트들 간의 상호 통신을 위한 장치이다.
  • 4대 컴포넌트의 통신 수단
  • 인텐트를 통해 다른 애플리케이션의 컴포넌트를 활성화 시킬 수 있다.

 

 

 

 

<참고>

 

GitHub - WooVictory/Ready-For-Tech-Interview: 💻 신입 개발자로서 준비를 하기 위해 지식을 정리하는 공간

💻 신입 개발자로서 준비를 하기 위해 지식을 정리하는 공간 👨‍💻. Contribute to WooVictory/Ready-For-Tech-Interview development by creating an account on GitHub.

github.com

 

 

안드로이드 (Android) 4대 컴포넌트(구성요소)

블로그를 새로 시작하는 김에 되돌아 볼겸 안드로이드의 기초중에 기초인 컴포넌트에 대해 포스팅 하겠습니다. 필자는 대학에서 안드로이드 모바일을 전공을 하였는데 숱하게 교수님이 컴포넌

velog.io

 

 

 

colin's 블로그

개발 강좌 블로그

colinch4.github.io

 

반응형