본문 바로가기
안드로이드 프로그래밍/Android

[Android] 안드로이드 4대 컴포넌트에 대해서 알아보자.

by 1chanhue1 2024. 9. 11.

안드로이드 4대 컴포넌트

안드로이드의 4대 컴포넌트는 안드로이드 애플리케이션을 구성하는 주요 구성 요소들로, 각각의 컴포넌트는 특정한 역할을 수행하며, 시스템과 상호작용하는 방식이 정의되어 있습니다. 안드로이드 4대 컴포넌트에는 액티비티(Activity), 서비스(Service), 방송수신자(Broadcast Receiver), 콘테트 제공자(Content Provider)가 있다.

특징으로는 

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

 

1. Activity (엑티비티)

  • 액티비티는 사용자가 앱과 상호작용하는 하나의 화면을 의미하며 사용자에게 드러나는 화면을 의미한다.
  • Application에 화면이 하나도 없으면, 사용자와 상호작용 할 수 없으므로 적어도 하나의 액티비티는 반드시 필요하다.
  • 다른 Application의 액티비티 역시 인텐트(Intent)를 통해 불러올 수 있다.
  • 안드로이드 Application은 반드시 하나 이상의 액티비티를 포함하고 있으며 액티비티는 생명주기(Life Cycle) 관련 메서드들을 재정의하여 원하는 기능들을 구현할 수 있다.
    • 2개 이상의 액티비티를 동시에 Display 할 수 없다.
    • 1개 이상의 View 또는 ViewGroup을 포함한다.
    • 액티비티 내에 프래그먼트(Fragment)를 추가하여 화면을 분할시킬 수 있다.

2. Service (서비스)

  • 서비스는 액티비티와 반대로 직접적으로 상호작용하지 않는 요소이다.
  • 백그라운드에서 어떠한 작업을 처리하기 위해 사용된다.
  • Application이 종료되어도 Background에서 동작하는 컴포넌트이다.
  • 음악 앱 같은 경우에 Background에서 계속 음악을 재생시키기 때문에 이 기능은 서비스에 해당된다. 타이머 앱 같은 경우도 마찬가지다.
  • 서비스 같은 경우 사용자의 인터페이스(UI, 화면)를 방해하지 않고 눈에 보이지 않는 곳에서 작업을 처리하기 때문에 별도의 스레드(Thread)에서 동작한다고 오해하는 경우가 많다.
  • 하지만 서비스는 엄연히 메인 스레드에서 동작하기 때문에 서비스 내에서 별도의 스레드를 생성하여 작업을 처리해야 합니다.
    • 네트워크(Network)와 연동이 가능하다.
    • 별도의 UI를 가지지 않으며 백그라운드에서 수행된다.
    • 액티비티와 서비스는 UI스레드라고 불리는 동일한 애플리케이션 스레드로 실행된다.
    • 애플리케이션이 종료되어도 이미 시작이 된 서비스(Service)는 백그라운드(Background)에서 계속 동작한다.

3.BroadCast Receiver (방송 수신자)

  • 안드로이드 OS로부터 발생하는 각종 이벤트와 정보를 받아와 핸들링하는 컴포넌트이다.
  • 수신기를 통해 디바이스 상황을 감시하다가 이벤트가 발생하면 해당 이벤트에 맞게 정의한 작업들을 수행하는 역할을 한다.
  • 즉, 디바이스에서 발생하는 중요한 이벤트를 Application에 알려준다.
  • 예를 들면, 배터리 부족, 문자 수신, 같은 정보를 받아서 처리할 때 동작한다.
    • 거의 대부분 UI를 가지지 않는다.
    • 안드로이드 디바이스의 특수한 상황에 대응하기 위해 사용된다.
    • 특정한 상황을 제외하고는 브로드캐스트는 시스템에서 시작한다.

 

4. Content Provider (컨텐츠 제공자)

  • 콘텐츠 제공자는 데이터를 관리하고 다른 Application의 데이터를 제공하는데 사용되는 컴포넌트이다.
  • 데이터를 저장하고, 불러와서 사용할 수 있는 시스템을 의미한다. DB, 파일 시스템 등이 있다.
  • 파일 시스템이나 SQLiteDB, 기타 저장소 위치에서 앱이 접근 가능한 저장소의 데이터를 읽거나 쓸 수 있다.
  • 용량이 큰 데이터를 공유하는데 적합하다.
  • 예를 들면, 갤러리 앱에 접근하여 사진 파일을 가져오거나 지도 앱에서 자신의 현재 위치를 가져오는 등이 있다.
  • 이러한 콘텐츠 제공자를 이용하기 위해서는 권한을 획득해야 한다. 이러한 정보들은 민간함 정보들이기 때문에 보통 맨 처음에 앱을 설치하면 바로 권한 요청이 뜨는데 보안적인 이슈를 고려해서이다.

 

인텐트 (Intent)

  • Application 컴포넌트간에 작업 수행을 위한 정보를 전달하는 역할을하며 통신수단이라고 보면 된다.
  • 화면 전환(이동)이 있을 때 가장 많이 사용된다.
  • 서로 독립적으로 동작하는 4가지 컴포넌트들 간의 상호 통신을 위한 장치이다.
  • 컴포넌트에 액션(Action) 데이터(Data) 등을 전달한다.
  • 인텐트를 통하여 다른 Application의 컴포넌트를 활성화시킬 수 있다.