안드로이드 앱을 만들때 주로 사용되는 Activity, Service, ContentProvider, BroadcastReceiver 라는 4개의 컴포넌트가 있다. 이들이 사실상 거의 모든 구성요소라고 해도 과언이 아닐거라 생각한다. 간단한 개념만 살펴보도록 하자.
[출처 : 꼬들스튜디오, https://ggodol.tistory.com/]
Intent(인텐트)
위 그림에서 보면 가운데 존재하는 Intent라는 것이 있다. 간단히 말하면 컴포넌트간의 메시지를 주고 받는 메시징 오브젝트라고 생각하면 된다. 컴포넌트끼리 전활될때에는 Intent를 거쳐서 전환되게 된다. 그렇기에 전환시 진행할 작업이나 데이터등을 함께 전달하기도 한다.
예를 들어보면, 외부에서 url scheme을 통해 앱을 실행할때가 있을것이다. 이때 결국 외부 Activity에서 실행할 앱의 Activity로 전환되는 것이 아닌가? 컴포넌트 끼리 전환이 일어난다는 것이다. 이때 url scheme에 포함된 parameter에 따른 작업을 하고 싶을때 Intent를 통해 전달한후 처리하면 될것이다.
정리하자면 Intent 는 컴포넌트 사이의 [중간다리] 인것이다.
Activity(액티비티)
버튼, 스크롤, 체크박스 등등 UI 갖는 하나의 화면이 있다. 이러한 화면을 통해 앱과 인터렉티브를 하면서 이용을 하게 된다. 메일화면 Activity는 메일을 읽고, 쓰고, 지우는 등의 활동을 하게 해준다. 직역을 해보면 Activity는 활동이라는 뜻이다. 안드로이드의 Activity는 활동을 할 수 있는 화면의 단위인 것이다. 모든 앱은 1개 이상의 Activity를 반드시 가지며, 동시에 2개이상의 Activity는 띄울수 없다. 단지 하나의 Activity에서 Fragment를 이용하여 분할만 할 수 있을뿐…
Service(서비스)
[출처 : 코딩팩토리, https://coding-factory.tistory.com/205?category=758272]
현재 Activity 처럼 눈에보이는 활동을 전면에서 해주는 상태는 Foreground라고 한다. 그렇다면 눈에는 보이지 않지만, 무언가 처리가 되고있거나 남아있는 상태는? Background라고 한다. Background에서 처리되야할 일들이 없지는 않다. 간혹 음악플레이어를 Background라고 상태로 돌렸는데(앱을 끄는것이 아닌 홈버튼 등을 눌러 Activity를 전환시킨 경우) 음악은 계속 나오게 하는것, Notification을 받는것등… 이용하기 나름이다. Service는 Background에서 실행되는 프로세스를 의미한다. Background에서 실행되기 때문에 화면이 필요가 없다.
Content Provider(콘텐트 제공자)
예전 포스트중 안드로이드 앱간 데이터공유에서 소개한적이 있다. 앱들은 DB를 가지고 있고 이곳에 있는 데이터를 관리는 ContentProvider를 통해서 이용한다. 다른 앱에 데이터를 제공해주는것도 이를 통해서 하기때문에 앱간 데이터 공유가 가능한것이다. 4대 Component 중에서 유일하게 생명주기를 갖지 않는다.
Broadcast Receiver(방송 수신자)
안드로이드 단말기는 배터리부족, 메시지 도착, 시스템부팅등 다양한 이벤트나 정보를 발생시킨다. 이러한 이벤트나 정보를 Broadcast(방송) 라고한다. 앱들은 사실 이러한 Broadcast를 모두 받을수 있다. 하지만 굳이 다 받을 필요가 있을까? 필요한것만 받으면 될것이다. 이때 앱들은 BroadcastReceiver를 통해 특정 Broadcast를 받으면 된다. BroadcastReceiver는 AndroidManifest.xml 에 정의되어있는 Broadcast를 수신받아 적절한 처리를 하게 도와주는 Component이다. 이는 정적인 방법이고 동적으로도 등록 가능하다.
[출처 : 코딩팩토리, https://coding-factory.tistory.com/205?category=758272]