본문 바로가기
Mobile 📱

[Android/안드로이드] 4대 컴포넌트

by 서니서닝 2023. 2. 28.
728x90

컴포넌트 (Component)

컴포넌트는 구성요소라는 뜻이다.

즉, 안드로이드 4대 컴포넌트는 안드로이드 앱을 구성하는 데에 필요한 4개의 요소를 의미한다.

  • 액티비티(Activity)
  • 서비스(Service)
  • 방송 수신자(BroadCast Receiver)
  • 콘텐츠 제공자(Content Provider)

각 컴포넌트는 독립적인 형태로 존재하며, 고유한 기능을 수행하고 인텐트(Intent)를 통해 상호작용한다.

 

인텐트(Intent)

컴포넌트 간에 작업 수행을 위한 정보를 전달하는 역할, 통신수단

 

  • 4가지 컴포넌트들 간의 상호 통신을 위한 장치
  • 컴포넌트에 액션(Action), 데이터(Data) 등을 전달한다.
  • 인텐트를 통해 다른 애플리케이션의 컴포넌트를 활성화시킬 수 있다.
  • 가장 많이 사용하는 예 : 액티비티 간 화면 전환(이동)
    • 컴포넌트 A가 컴포넌트 B를 호출할 때 필요한 정보를 가지고 있음
    • 이 정보에는 호출 대상이 되는 컴포넌트 B의 이름이 명시적으로 표시됨 + 속성(Attribute)들이 암시적으로 표시
    • 호출된 컴포넌트 B가 호출한 컴포넌트 A로 어떠한 결과를 전달할 때에도 인텐트 사용

 

액티비티(Activity)

안드로이드에서 화면을 관리하고 사용자가 발생시키는 다양한 이벤트를 처리하는 컴포넌트

액티비티는 사용자가 Application과 상호작용하며 실제로 사용자에게 보이는 화면을 의미한다.

 

  • Application에 화면이 하나도 없으면, 사용자와 상호작용할 수 없으므로 적어도 하나의 액티비티는 반드시 필요하다.
  • 다른 Application의 액티비티 역시 인텐트를 통해 불러올 수 있다.
  • 하나 이상의 View 또는 ViewGroup을 가지고 있어야 한다.
    • View는 화면에서 눈에 보이는 것들을 의미한다.
    • ex ) 텍스트, 버튼, 이미지 ...
    • ViewGroup은 레이아웃을 의미한다.

 

서비스(Service)

화면에서는 보이지 않지만 백그라운드에서 특정 기능을 수행하는 컨포넌트

 

  • 메인 스레드에서 작동하기 때문에 앱이 터지는 걸 방지하기 위해서는 별도의 thread 생성하여 작업처리 필요
  • Network와 연동이 가능하다.
  • 지속적으로 장시간 동작해야하는 기능이 있다면 서비스에 구현해야 한다.
  • Background에서 어떠한 작업을 처리하기 위해 사용된다.
  • Application이 종료되어도 Background에서도 동작하는 컴포넌트이다.
    • 음악 앱 같은 경우, Background에서 계속 음악을 재생시키기 때문에 이 기능은 서비스에 해당한다.
    • 타이머 앱 같은 경우, 타이머를 실행시킨 후 다른 앱을 사용하여도 타이머는 계속 작동되므로 서비스에 해당한다.

 

방송 수신자(BroadCast Receiver)

특정 어플에서 발생하는 특정 브로드캐스트 메세지를 처리하는 컴포넌트

  • 안드로이드 OS로부터 발생하는 이벤트 정보를 받고 핸들링하는 컴포넌트이다.
  • 10초 이내의 작업만을 보증하므로 오랜 시간 동작해야한다면 별도의 쓰레드로 처리하거나 서비스로 구현해야 한다.
  • 대부분 UI를 가지지 않으며, 수신기를 통해 디바이스 상황을 감시하다가 이벤트가 발생하면 해당 이벤트에 맞게 정의한 작업들을 수행하는 역할을 한다.
  • => 디바이스에서 발생하는 중요한 이벤트를 Application에 알려준다.
  • 특정 상황을 제외하고는 시스템에서 시작한다.
  • ex) 배터리 부족, 문자 수신, 전화 수신 같은 정보를 받아서 이를 처리할 때 동작한다.

 

콘텐츠 제공자(Content Provider)

앱 간 데이터공유를 위한 클래스를 제공하는 컴포넌트

  • 데이터를 저장하고, 불러와서 사용할 수 있는 시스템들을 의미한다.
    • ex) DB, 파일 시스템
  • 파일 시스템이나 SQLiteDB, 기타 저장소 위치에서 앱이 접근 가능한 저장소의 데이터를 읽거나 쓸 수 있다.
  • 용량이 큰 데이터를 공유하는데 적합하다. (작은 데이터들은 인텐트로 공유가능)
    • ex) 인스타그램 앱에서 갤러리 앱에 접근하여 사진 파일을 가져오거나 앱에서 자신의 현재 위치를 가져오는 것
  • 콘텐츠 제공자를 이용하기 위해서는 권한을 획득하여야 한다. 이러한 정보들은 민감한 정보들이기 때문에 보통 맨 처음에 앱을 설치하면 바로 권한 요청이 뜨는데, 보안적인 이슈를 고려해서이다.
  • 데이터베이스에서 흔히 사용되는 CRUD 원칙을 준수한다.

 

📖 참고 자료

안드로이드 4대 컴포넌트(Android 4 Componet)

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

728x90

댓글