💡 Android 4대 컴포넌트란?
Android에서 4대 컴포넌트는 애플리케이션을 구성하고 동작시키는 기본적인 구성 요소들을 말한다. 이 4대 컴포넌트는 각각 다른 역할을 수행하며, 함께 조합하여 완전한 Android 애플리케이션을 구축한다.
📌 컴포넌트는 무엇이고 어떤 역활을 수행하는지?
Android에서 컴포넌트(Component)는 애플리케이션을 구성하고 동작시키는 기본적인 모듈 또는 요소를 말한다. 각 컴포넌트는 특정한 역할을 수행하며, 이들을 조합하여 완전한 Android 애플리케이션을 구축할 수 있다. 다양한 컴포넌트들은 서로 상호작용하면서 앱의 기능과 동작을 결합시킨다.
- 컴포넌트는 애플리케이션을 구성하는 단위이며 애플리케이션이 아니다.
- 컴포넌트는 애플리케이션이 아니다.
- 하나의 애플리케이션은 여러 컴포넌트로 구성되어 있다.
- 안드로이드에서는 클래스로 컴포넌트를 개발한다.
- 하나의 클래스는 하나의 컴포넌트이다.
- 앱을 구성하는 모든 클래스는 컴포넌트가 아니다.
- 컴포넌트 클래스 : 개발자가 만들기는 했지만 생명주기를 안드로이드 시스템에서 관리.
- 일반 클래스 : 클래스의 객체 생성부터 소멸까지 생명주기 관리를 개발자 코드에서 관리.
- 컴포넌트는 앱의 구성단위 이며, 여러개의 컴포넌트들을 조합하여 하나의 앱을 만들 수 있다.
-
- 컴포넌트의 물리적인 모습은 클래스이며, 모든 클래스가 컴포넌트는 아니다.
- Android의 클래스는 일반 클래스, 컴포넌트로 나뉘는데, 일반클래스의 생명주기는 개발자 코드로 관리하고 컴포넌트는 생명주기를 안드로이드 시스템이 생성하여 관리하다가 소멸된다.
-
- 컴포넌트는 앱 내에서 독립적인 앱 실행 단위이다.
- 컴포넌트끼리 서로 종속되지 않아서 코드 결합이 발생하지 않는다.
- 컴포넌트 클래스는 독립적인 수행 단위로 동작하기 때문에 직접 개발자 코드로 생성해서 실핼할 수 있다.
- ex) A클래스에서 B클래스를 실행하려면 val b: B = B() 로 객체를 생성해서 실행하는데, 실행하고자 하는 B클래스가 컴포넌트 클래스라면 Intent를 매개로 하여 결합하지 않은 상태에서 독립적으로 실행하는 구조.
- main 함수 같은 어플리케이션의 진입 지점이 따로 없다. (앱의 실행 시점이 다양할 수 있다. ← 안드로이드 앱은 메인 함수 개념이 없다.)
- 앱의 실행 시점은 다양한데, 컴포넌트 클래스들은 모두 프로세스가 구동되었을 때 최초로 실행되는 실행 시점이 될 수 있다.
- ex) 사용자가 SMS를 실행한 적이 없을때, 스마트폰에 SMS가 전달되면 사용자가 앱을 실행하지 않아도 SMS수신 기능을 하는 컴포넌트 부터 실행되어 프로세스가 구동될 수 있다.
- 앱의 실행 시점은 다양한데, 컴포넌트 클래스들은 모두 프로세스가 구동되었을 때 최초로 실행되는 실행 시점이 될 수 있다.
- 어플리케이션 라이브러리 개념이 존재한다.
- 안드로이드가 컴포넌트 기반이기 때문에 개발자의 코드가 결합이 발생하지 않으므로 외부 앱의 컴포넌트도 실행할 수 있다.
- 컴포넌트의 특징
- 각 컴포넌트들은 하나의 독립적인 형태로 존재
- 컴포넌트들은 고유의 기능을 수행
- 컴포넌트들은 인텐트를 통해 서로 상호작용
📌 Android 4대 컴포넌트
- Activity(Ui를 구성하기 위한 컴포넌트)
- 사용자 인터페이스(UI)를 가지는 화면 단위의 컴포넌트이다.
- 사용자와 상호작용하고 화면을 표시하며, 애플리케이션의 UI를 구성하는 역할을 한다.
- 앱에서 여러 개의 액티비티가 존재하며, 하나의 액티비티가 실행될 때 다른 액티비티를 호출하거나 전환할 수 있다.
- Service(Ui 없이 백그라운드에서 장시간 수행되는 컴포넌트)
- 백그라운드에서 실행되는 비주얼 UI 없는 컴포넌트이다.
- 백그라운드에서 오랫동안 실행되는 작업이나 서버와의 통신 등을 처리하는데 사용된다.
- 사용자와 직접 상호작용하지 않으며, 더 오랫동안 실행될 수 있는 컴포넌트이다.
- Broadcast Receiver이벤트 모델로 수행되는 컴포넌트)
- 시스템 또는 앱 내에서 발생하는 브로드캐스트 메시지(이벤트)를 수신하는 컴포넌트이다.
- 예를 들어, 배터리 부족, 네트워크 연결 변경 등의 시스템 이벤트를 감지하거나, 다른 앱이나 시스템으로부터 전달되는 브로드캐스트 메시지를 수신할 수 있다.
- Content Provider(애플리케이션 간 데이터를 공유하기 위한 컴포넌트)
- 앱 간 데이터를 공유하고 관리하는데 사용되는 컴포넌트이다.
- 데이터베이스, 파일 시스템, 네트워크 등의 데이터를 다른 앱과 공유하고 사용할 수 있도록 인터페이스를 제공한다.
이 4대 컴포넌트는 각각 다른 역할을 수행하며, 앱을 다양한 방식으로 구성하고 동작시키는 데 사용된다. 이 컴포넌트들을 조합하여 안드로이드 애플리케이션의 다양한 기능과 동작을 구현할 수 있다.
++Intent
- 어플리케이션 컴포넌트간에 작업수행을 위한 정보를 전달하는 역활, 인텐트를 통하여 다른 어플리케이션의 컴포넌트를 활성화시킬 수 있다.
참고
'Develop > Kotlin' 카테고리의 다른 글
[Kotlin] Data class (0) | 2024.04.03 |
---|---|
[Kotlin] enum와 sealed class (0) | 2024.02.26 |
[kotlin] 코틀린 기본 문법 (0) | 2022.12.06 |
[kotlin] 객체 지향 프로그래밍 (0) | 2022.12.05 |
[kotlin] 코틀린이란 무엇인가? (0) | 2022.12.02 |