개발/Android

안드로이드 4대 컴포넌트

heidiee 2024. 7. 17. 13:08

안드로이드 앱을 구성하는데 필요한 4가지 요소가 있다.

 

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



<특징>

- 각 컴포넌트는 독립적으로 존재

- 각 컴포넌트는 고유의 기능을 수행

- 각 컴포넌트는 인텐트를 통해 서로 상호작용함

 

 

Activity

사용자와 상호작용을 담당하는 인터페이스.

앱을 실행할 때는 앱을 전체적으로 호출하는 것이 아니라 앱의 액티비티를 호출하게 된다

액티비티는 Lifecycle 관련 메서드들을 재정의하여 원하는 기능을 구현할 수 있다..

 

  • 액티비티는 사용자가 Application 과 상호작용하며 실제로 사용자에게 보이는 화면을 의미한다.
  • 액티비티는 Intent를 통해 다른 Application의 Activity를 호출할 수 있다
  • 2개 이상의 Activity를 동시에 Display할 수 없다.
  • 1개 이상의 View (텍스트, 버튼, 이미지) 또는 View Group (레이아웃)을 포함한다.
  • 반드시 App에는 하나 이상의 액티비티가 있어야 한다.
  • 액티비티 내 Fragment를 추가하여 화면을 분할할 수 있다

 

 

Service

서비스는 Activity와 다르게 사용자와 직접적으로 상호작용 하는 요소는 아니며 Background에서 어떠한 작업을 처리하기 위해 사용된다.

 

  • Application이 종료되어도 Background에서 동작한다. (예를들어 음악 앱을 종료해도 음악은 계속 재생되듯이)
  • Network와 연동이 가능하다.
  • Activity와 Service는 UI Thread 라고 불리는 동일한 Application Thread 로 실행된다.
  • 앱이 API 26 이상을 대상으로 할 경우
    • 즉시 실행해야 하는 작업: Work Manager
    • 지연 작업: Alarm Manager
  • Bind Service: App Componenet가 bindService를 호출해 서비스를 호출하면 서비스가 바인딩 된다. 바인딩 된 서비스는 client-server interface를 제공하여 서비스와 상호작용한다. 여러개가 한번에 binding 될 수 있고, Binding 된 componenet가 모두 종료되면 서비스도 종료된다.

 

 

Broadcast Receiver

방송수신자는 안드로이드 OS에서 발생하는 이벤트와 정보를 받아 핸들링 하는 컴포넌트다.

안드로이드 디바이스의 특수한 상황에 대응하기 위해 사용된다. (시스템 부팅시 앱 초기화, 네트워크 끊김 등과 같은 경우)

 

  • 거의 대부분 UI를 가지지 않고, 이벤트 발생 시에만 이벤트에 맞게 정의한 작업을 수행한다.
  • 특정한 상황을 제외하고 Broadcast 는 시스템에서 시작된다

 

Content Provider

콘텐트 제공자는 데이터를 관리하고 다른 Application의 데이터를 제공하는데 사용되는 컴포넌트다.

특정한 Application이 사용하고 있는 DB 를 공유하기 위해 사용하며 Application간의 데이터 공유를 위해 표준화 된 Interface를 제공한다.

 

  • SQLite DB / WEB / 파일 입출력 등을 통해 데이터를 관리한다.
  • 작은 데이터는 Intent를 사용하지만 음악, 사진, 파일 등과 같은 용량이 큰 데이터들을 공유하는데 적합하다.
  • 외부 Application이 현재 실행중인 Application내에 있는 DB에 접근하지 못하게 할 수 있으면서, 나 자신이 공개하고 공유하고 싶은 데이터만 공유할 수 있도록 도와준다.
  • DB의 CRUD원칙을 준수한다
  • Provider는 데이터의 R/W 권한이 있어야 Application 에 접근이 가능하다

 

 

출처: https://superohinsung.tistory.com/54