

액티비티 (Activity)
- 액티비티는 사용자가 Application과 상호작용하며 실제로 사용자에게 보이는 화면을 의미합니다. Application에 화면이 없다면 사용자와 상호작용 할 수 없다는 의미와 같으므로 반드시 하나의 액티비티는 존재해야 합니다.
- 다른 Application의 액티비티 역시 인텐트를 통해 불러올 수 있으며 액티비티는 생명주기(Life Cycle) 관련 메서드를 재정의하여 원하는 기능들을 구현할 수 있습니다.
- 2개 이상의 액티비티를 동시에 Display 할 수 없고 1개 이상의 View 또는 ViewGroup을 포함합니다.
서비스 (Service)
- 서비스는 액티비티처럼 사용자와 직접적으로 상호작용하는 요소는 아닙니다.
백그라운드(Background)에서 어떠한 작업을 처리하기 위해서 서비스를 사용하는데, 만약 Application이 종료되어도 백그라운드(Background)에서 동작하는 컴포넌트가 서비스이다.
- 대표적으로 음악 앱과 타이머 앱처럼 Background에서 계속 음악이 재생되거나 타이머가 작동되기 때문에 이 기능은 서비스에 해당됩니다.
- 서비스 같은 경우가 사용자의 인터페이스(UI, 화면)를 방해하지 않고 눈에 보이지 않는 곳에서 작업을 처리하기 때문에 별도의 스레드(Thread)에서 동작한다고 생각할 수 있지만, 서비스는 엄연히 메인 스레드(Main Thread) 에서 동작하기 때문에 서비스 내에서 별도의 스레드를 생성하여 작업을 처리해야 합니다.
- 서비스는 네트워크와 연동이 가능하고 별도의 UI를 가지지 않으며 액티비티와 서비스는 UI스레드라고 불리는 동일한 애플리케이션 스레드(Thread)로 실행됩니다.
방송 수신자 (BroadCast Receiver)
- 방송 수신자 (BroadCast Receiver)는 안드로이드 OS로부터 발생하는 각종 이벤트와 정보를 받아와 핸들링하는 컴포넌트입니다. 간단하게 말하면 안드로이드 시스템이나 다른 앱으로부터 전송되는 브로드캐스트 메시지를 수신하는 컴포넌트입니다.
- 사용자 안드로이드 디바이스의 시스템 부팅시 앱 초기화, 네트워크 끊김 등 특수한 이벤트에 대한 처리나 배터리 부족 알림, 문자 수신과 같은 정보를 받아 처리를 해야 할 필요가 있을 때 동작합니다. 즉, 안드로이드 OS에서 메신저 앱 또는 문자 메시지가 오면 모든 앱에 메시지에 대한 정보를 방송(BroadCast)을 합니다. 이 메시지를 받기 위해 브로드캐스트 리시버(BroadCast Receiver)를 구현하면 되고 해당 정보가 오면 특정 이벤트를 처리할 수 있습니다.
- 브로드캐스트 리시버(BroadCast Receiver)는 대부분 UI를 가지지 않으며 안드로이드 디바이스의 특수한 상황에 대응하기 위해 사용됩니다.
- Broadcast (브로드 캐스트란)? 브로드 캐스트(Broadcast)는 컴퓨터 네트워크에서 전송되는 메시지를 일방적으로 모든 연결된 장치에게 보내는 통신 방식입니다.. 이 방식은 단일 송신자가 여러 수신자에게 동시에 메시지를 보낼 수 있도록 합니다.
콘텐트 제공자 (Content Provider)
- 콘텐트 제공자(Content Provider)는 데이터를 관리하고 다른 애플리케이션의 데이터를 제공하는데 사용되는 컴포넌트입니다. 특정한 애플리케이션이 사용하고 있는 데이터베이스(DB)를 공유하기 위해 사용하며 애플리케이션 간의 데이터 공유를 위해 표준화된 인터페이스를 제공합니다.
- 외부 애플리케이션이 현재 실행 중인 애플리케이션 내에 있는 데이터베이스(DB)에 함부로 접근하지 못하게 할 수 있으면서 나 자신이 공개하고 공유하고 싶은 데이터만 공유할 수 있도록 도와줍니다.
- 작은 데이터들은 인텐트(Intent)로 애플리케이션끼리 데이터를 서로 공유가 가능하지만 콘텐트 제공자(Content Provider)는 음악 또는 사진 파일 등과 같이 용량이 큰 데이터들을 공유하는데 적합합니다.
- 데이터베이스에서 흔히 사용되는 CRUD(Create, Read, Update, Delete) 원칙을 준수합니다.
.
.
.
인텐트 (Intent)
- 인텐트란 애플리케이션 컴포넌트 간에 작업 수행을 위한 정보를 전달하는 역할을 하며 통신수단이라고 보면 됩니다. 인텐트를 가장 많이 사용하는 예로는 액티비티 간의 화면 전환(이동)이 있습니다.
- 서로 독립적으로 동작하는 4가지 컴포넌트들 간의 상호 통신을 위한 장치로 컴포넌트에 액션(Action), 데이터(Data) 등을 전달합니다. 또한 인텐트(Intent)를 통하여 다른 애플리케이션의 컴포넌트를 활성화시킬 수 있습니다.