안드로이드 4대 컴포넌트는 Activity, Service, BroadcastReceiver, ContentProvider입니다. 이는 안드로이드의 주요 구성 요소이고, Intent를 통해 통신합니다.
각 컴포넌트들은 하나의 독립적인 형태로 존재하고, 각각의 고유 기능을 수행합니다. 또한, 각각 나름의 생명 주기(LIfeCycle)가 있어 구성 요소의 생성 및 소멸 방식을 정의합니다.
액티비티 (Activity)
액티비티는 사용자가 애플리케이션과 상호작용하기 위한 진입점입니다. 이는 사용자 인터페이스를 포함한 화면 하나를 나타냅니다.
AppCompatActivity 클래스를 상속받는 클래스를 액티비티로 이용할 수 있습니다.
액티비티는 애플리케이션에서 반드시 하나 이상 존재해야 하고, 여러 액티비티를 동시에 보여줄 수 없습니다. 액티비티는 생명주기를 가지고, 액티비티를 종료하지 않으면 스택 구조로 쌓이게 됩니다.
또한, 하나의 액티비티에 분할된 화면을 표현하기 위해 Fragment를 활용할 수 있습니다.
생명주기에 대한 설명 링크입니다. 참고하시면 좋을 것 같습니다.
https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko
활동 수명 주기에 관한 이해 | Android 개발자 | Android Developers
활동은 사용자가 전화 걸기, 사진 찍기, 이메일 보내기 또는 지도 보기와 같은 작업을 하기 위해 상호작용할 수 있는 화면을 제공하는 애플리케이션 구성요소입니다. 각 활동에는 사용자 인터페
developer.android.com
서비스 (Service)
서비스는 백그라운드에서 앱을 실행하기 위한 다목적 진입점입니다. 이는 백그라운드에서 실행되는 구성 요소로, 오랫동안 실행되는 작업을 수행하거나 원격 프로세스를 위한 작업을 수행합니다.
서비스는 사용자 인터페이스를 제공하지 않습니다. 백그라운드에서 음악 재생을 하는 것을 예로 들 수 있습니다.
눈에 보이지 않는 작업을 처리하기 때문에 별도의 스레드에서 동작한다고 생각하는 경우가 많은데, 서비스는 메인스레드에서 동작합니다. 그러므로, 별도의 스레드를 생성해서 작업을 처리해야 합니다.
또한, 네트워크와 연동이 가능하고 애플리케이션이 종료되어도 이미 시작된 서비스는 계속 동작하는 특징을 지닙니다.
브로드 캐스트 리시버 (BroadcastReceiver)
브로드 캐스트 리시버는 안드로이드 OS로부터 발생하는 각종 이벤트와 정보를 받아와 핸들링하는 컴포넌트입니다.
디바이스의 배터리 부족 알림, 문자 수신과 같은 정보를 받아 처리해야 할 필요가 있을 때 동작합니다.
즉, 문자가 왔을 때 문자가 왔다는 하나의 정보를 모든 앱에 알리는 역할을 합니다. 이러한 메시지가 오면 특정 이벤트를 처리할 수 있습니다.
브로드 캐스트 리시버는 거의 UI를 가지지 않고, 디바이스의 특수한 상황에 대응하기 위해 사용합니다.
컨텐트 프로바이더 (ContentProvider)
컨텐트 프로바이더는 데이터를 관리하고 다른 애플리케이션의 데이터를 제공하는 데 사용되는 컴포넌트입니다. 특정한 애플리케이션이 사용하고 있는 DB를 공유하기 위해 사용하며 애플리케이션 간의 데이터 공유를 위해 표준화된 인터페이스를 제공합니다.
DB / WEB / File 입출력 등을 통해 데이터를 관리합니다. 크기가 작은 데이터를 공유할 때는 Intent를 사용하는 것이 적합하고, 이미지 파일 등과 같이 용량이 큰 데이터들을 공유하는 데 사용합니다.
인텐트 (Intent)
인텐트는 애플리케이션 컴포넌트 간에 작업 수행을 위한 정보를 전달하는 역할을 합니다. 보통 개발을 하다 보면 액티비티 간의 화면 전환을 구현할 때 많이 사용합니다.
인텐트를 통해 컴포넌트에 액션, 데이터 등을 전달하고 다른 애플리케이션의 컴포넌트를 활성화시킬 수 있습니다.
마무리
최근 작업을 하며 기본 지식에 대한 공부를 다시 한번 하자고 마음먹었습니다. 코드를 쓰는데 어떤 기능인지 기억이 안 나더라고요😂
위에 내용들은 가장 기본적이면서 생각보다 쓸 일이 많기 때문에 어떤 역할을 하는지 정확하게 알고 사용하는 것이 좋을 것 같아 정리해 보았습니다.
모두 즐코😉😉
Reference