안드로이드 4대 컴포넌트란?
안드로이드 앱을 구성하는데 필요한 4개의 요소를 의미한다.
- 액티비티(Activity)
- 서비스(Service)
- 방송수신자(Broadcast Receiver)
- 콘텐트 제공자(Content Provider)
이렇게 4가지가 있다.
4대 컴포넌트의 특징
Android 앱의 필수적인 구성요소로, 각각은 고유의 기능을 가지고 있고, 인텐트를 통해서 상호작용을 할 수 있다.
또한 시스템이나 앱에 들어올 수 있는 진입점이다.
1. Activity
사용자와 상호작용을 담당하는 인터페이스
앱을 실행할 때 앱의 액티비티를 호출한다.
생명주기 관련 메서드들을 재정의하여 원하는 기능들을 구현
- 액티비티는 사용자가 앱과 상호작용하는 하나의 화면을 의미하며 사용자에게 드러나는 화면이다.
- 사용자와 상호작용을 담당하는 인터페이스이기 때문에 적어도 반드시 하나 이상의 액티비티를 포함하고 있어야 한다.
- 컴포넌트끼리는 인텐트를 통해 상호작용하기 때문에, 인텐트를 통해 다른 액티비티를 호출할 수 있다.
- 하나 이상의 View 또는 ViewGroup을 포함하고 있어야 한다.
- 액티비티 내에 프래그먼트(Fragment)를 추가하여 화면을 분할시킬 수 있다.
2. Service
서비스는 액티비티와 반대 (사용자와 직접 상호작용하는 요소 x)
백그라운드에서 어떠한 작업을 처리하기 위해 주로 사용
- application이 종료되어도 background에서 동작
- 예를 들면, 음악앱 종료해도 음악재생, 타이머 앱 종료해도 타이머 시간 계속 흘러감.
- 포그라운드 서비스 : 사용자에게 잘 보이는 작업, 반드시 알람 표시
- 백그라운드 서비스 : 사용자에게 보이지 않는 작업
- 네트워크와 연동 가능
- 액티비티와 서비스는 Ui스레드라고 불리는 동일한 애플리케이션 스레드로 실행
- 바인드 서비스 : 앱 컴포넌트가 bindService를 호출해 서비스를 호출하면 서비스가 바인딩 됨.
- 바인딩 된 서비스는 클라이언트-서버 인터페이스를 제공해 서비스와 상호작용함,
- 여러개가 한꺼번에 바인딩 될 수 있음
- 바인딩 된 컴포넌트가 모두 종료되면 서비스도 종료
3. Broadcast Receiver
방송수신자는 안드로이드 OS로부터 발생하는 각종이벤트와 정보를 받아 핸들링하는 컴포넌트이다.
안드로이드 디바이스의 특수한 상황에 대응하기 위해서 사용
- 시스템 부팅시 앱 초기화
- 네트워크 끊김
- 배터리부족 알림
- 문자수신
거의 대부분 UI를 가지 않는다.수신기를 통해 디바이스 상황을 감시하다가 이벤트가 발생하면 해당 이벤트에 맞게 정의한 작업들을 수행
특정한 상황을 제외하고는 브로드캐스트는 시스템에서 시작
4. Content Provider
데이터를 관리하고 다른 application의 데이터를 제공하는데 사용되는 컴포넌트
특정한 application이 사용하고 있는 DB를 공유하기 위해 사용하며 애플리케이션 간의 데이터 공유를 위해 표준화된 인터페이스를 제공
- QLite DB/ Web/ 파일 입출력 등을 통해서 데이터를 관리합니다.
- 외부 어플리케이션이 현재 실행중인 Application 내에 있는 데이터베이스에 함부로 접근하지 못하게 할 수 있으면서 나 자신이 공개하고 공유하고 싶은 데이터만 공유할 수 있도록 도와줍니다.
- 작은 데이터들은 인텐트(intent)로 Application끼리 데이터를 서로 공유가 가능하지만 콘텐트 프로바이더는 음악 또는 사진 파일 등과 같이 용량이 큰 데이터들을 공유하는데 적합합니다.
- 프로바이더는 데이터의 Read, Write에 대한 퍼미션이 있어야 Application에 접근이 가능합니다.
- 데이터베이스에서 흔히 사용되는 CRUD 원칙을 준수한다.
구성요소 활성화 : 인텐트(Intent)
4대 컴포넌트에 대해서 이야기를 할때 빠질 수 없는것이 바로 인텐트이다.
구성요소 중 콘텐츠 제공자를 제외한 액티비티, 서비스, 브로드캐스터는 인텐트라는 비동기식 메시지로 활성화된다.
인텐트는 런타임에서 각 구성요소를 바인딩한다. 서로 독립적으로 동작하는 4대 컴포넌트 간의 상호 통신을 위한 장치
컴포넌트에 액션이나 데이터를 전달 -> 이걸통해 다른앱의 컴포넌트를 활성화 시킬 수 있다.
인텐트에 대해서는 더 자세하게 따로 포스팅을 할 예정이다.
'안드로이드' 카테고리의 다른 글
[Android] 둥근 이미지뷰, CircleImageView (1) | 2024.03.24 |
---|---|
[Android] 뷰 모서리를 둥글게, CardView (0) | 2024.03.22 |
[안드로이드] 데이터 바인딩(DataBinding) (0) | 2024.02.20 |
[Android] 뷰 바인딩(ViewBinding) (0) | 2024.02.18 |
[Android] 안드로이드 아키텍처 컴포넌트 (Android Architecture Components) 간단정리 (1) | 2024.01.22 |