[Android] 4대 컴포넌트(Component)

나래·2024년 7월 17일

안드로이드 스튜디오의 컴포넌트란?

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

액티비티 (Activity)서비스 (Service)브로드캐스트 리시버 (Broadcast Receiver)콘텐트 프로바이더 (Content Provider)

특징

  • 각 컴포넌트는 독립적으로 존재한다.
  • 각 컴포넌트는 고유의 기능을 수행한다.
  • 각 컴포넌트는 인텐트를 통해서 서로 상호작용한다.

1. 액티비티 (Activity)

= 사용자와 상호작용을 담당하는 인터페이스이다. 앱을 실행할 때는 앱을 전체적으로 호출하는 것이 아닌 앱의 액티비티를 호출한다.
➡️ 액티비티는 생명주기와 관련한 메서드들을 재정의하여 원하는 기능들을 구현할 수 있다.

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

2. 서비스 (Service)

= 서비스는 액티비티와 반대로 사용자와 직접적으로 상호작용하는 요소는 아니다.
서비스는 주로 백그라운드(BackGround)에서 어떠한 작업을 처리하기 위해서 주로 사용된다.

  • Application이 종료되어도 Background에서 동작하는 컴포넌트이다.

  • ex) 타이머앱을 종료해도 타이머는 계속 흘러감.

  • 애플리케이션이 종료되어도 이미 시작된 서비스는 백그라운드에서 계속 동작한다.

  • 포그라운드 서비스 : 사용자에게 잘 보이는 작업.
    ➡️ 반드시 알림을 표시해야하며, 사용자가 앱과 상호작용하지 않을 때도 계속 실행된다.

  • 백그라운드 서비스 : 사용자에게 직접 보이지 않는 작업.

  • 네트워크와 연동이 가능하다

  • 액티비티와 서비스는 UI 스레드라고 불리는 동일한 애플리케이션 스레드로 실행된다.

  • 앱이 API 26이상을 대상으로 할 경우.

  • 즉시 실행해야하는 작업 : Work Manager

  • 지연 작업 : Alarm Manager

  • 바인드 서비스 : 앱 컴포넌트가 bindService를 호출해 서비스를 호출하면 서비스가 바인딩 된다.
    ➡️ 바인딩 된 서비스는 클라이언트-서버 인터페이스를 제공해 서비스와 상호작용한다. 여러 개가 한 번에 바인딩 될 수 있고, 바인딩 된 컴포넌트가 모두 종료되면 서비스도 종료된다.


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

= 브로드캐스트 리시버는 안드로이드 OS로부터 발생하는 각종이벤트와 정보를 받아 핸들링하는 컴포넌트이다.
안드로이드 디바이스의 특수한 상황에 대응하기 위해서 사용되며, 여기서 말하는 특수한 상황이란, 시스템 부팅시 앱 초기화, 네트워크 끊김과 같은 특수한 상황에 대한 처리, 그리고 배터리 부족 알림, 문자 수신같은 정보를 받아서 하는 처리를 의미한다.

  • 거의 대부분 UI를 가지지 않는다.
  • 수신기를 통해 디바이스 상황을 감시하다가 이벤트가 발생하면 해당 이벤트에 맞게 정의한 작업들을 수행하는 역할을 한다.
  • 특정한 상황을 제외하고는 브로드캐스트는 시스템에서 시작된다.

4. 콘텐트 프로바이더 (Content Provider)

= 콘텐트 프로바이더는 데이터를 관리하고 다른 Application의 데이터를 제공하는데 사용되는 컴포넌트이다.
특정한 Application이 사용하고 있는 DB를 공유하기 위해 사용하며, 애플리케이션 간의 데이터 공유를 위해 표준화된 인터페이스를 제공한다.

  • SQLite DB/Web/파일 입출력 등을 통해서 데이터를 관리한다.
  • 외부 어플리케이션이 현재 실행중인 Application 내에 있는 데이터베이스에 함부로 접근하지 못하게 할 수 있으면서, 나 자신이 공개하고/공유하려는 데이터만 공유할 수 있도록 도와준다.
  • 작은 데이터들은 인텐트(intent)로 Application끼리 데이터를 서로 공유가 가능하지만, 콘텐트 프로바이더는 음악 또는 사진 파일 등과 같이 용량이 큰 데이터를 공유하는데 적합하다.
  • 프로바이더는 데이터의 Read/Write에 대한 Permisson이 있어야 Application에 접근이 가능하다.
  • 데이터베이스에서 흔히 사용되는 CRUD 원칙을 준수한다.

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

0개의 댓글