안드로이드 4대 컴포넌트(Component)란?

Lee Jun Hyeong·2022년 12월 22일
0

Android 톺아보기 😇

목록 보기
9/17

🔍 컴포넌트(Component) 정의

  • 컴포넌트는 구성요라는 뜻을 지니고 있다. 따라서 안드로이드 4대 컴포넌트는 안드로이드 앱을 구성하는데 필요한 5개의 요소를 의미한다.
  • 안드로이드 4대 컴포넌트는 액티비티(Activity) 서비스(Service) 방송 수신자(BroadCast Receiver) 콘텐츠 제공자(Content Provider)가 있다.
  • 각 컴포넌트는 독립적인 형태로 존재하며, 고유한 기능을 수행하고 인텐트(Intent)를 통해 상호작용한다.

📌 액티비티 (Activity)

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

📌 서비스 (Service)

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

📌 방송 수신자 (BroadCast Receiver)

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

📌 콘텐츠 제공자 (Content Provider)

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

+ 인텐트 (Intent)

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

0개의 댓글