안드로이드 애플리케이션은 느슨하게 결합된 컴포넌트들로 구성되며, 각 컴포넌트와 이들이
서로 상호작용하는 방법을 기술하는 프로젝트 매니페스트를 통해 결합된다.
그럼, 이에 대한 여섯가지 내용에 대해서 간단히 알아 보도록하자 ^^
+ 액티비티 [ Activity ]
애플리케이션의 "프리젠테이션 계층"이다.
사용자 애플리케이션에 모든 화면은 액티비티(Activity) 클래스의 확장이 될 것이다.
즉, 일반 애플리케이션과 비교하면 윈도우 또는 대화상자와 비슷하다고 볼수 있다.
그러나, 꼭 윈도우나 대화상차처럼 화면 구성요소가 있어야 되는 것은 아니며,
화면이 없는 "헤드리스(headless)" 프로그램은 컨텐트 프로바이더나 서비스 형태로 사용 가능하다.
+ 컨텐트 프로바이더 [ Content Provider ]
컨텐트 프로바이더(Content Provider)는 공유할 수 있는 데이터의 저장소이다.
애플리케이션 데이터베이스를 관리하고 공유하는데 사용되어지며, 그외 기기에 있는
각종 데이터에 대한 추상적인 인터페이스 제공 및 여러 애플리케이션을 사용할 수 있다.
컨텐트 프로바이더를 구성하면 데이터에 대한 통제권을 충분히 확보한 상태에서 이와 같이 개발중인
애플리케이션뿐만 아니라 다른 애플리케이션에서도 접근 가능하도록 기능을 제공 할 수 있다.
+ 인텐트 [ Intents ]
인텐트(intents)는 간단한 메시지 전달 프레임워크이다.
특정 이벤트 발생 사실을 시스템 전역이나 원하는 대상 액티비티 또는 서비스에 알릴 수 있으며,
어떠한 동작을 수행하고자 하는 메시지를 전달 할 수도 있다.
다시 말하면, 안드로이드 시스템에 특정 해야할 일에 대해서 요청하는 메세지이다.
이 메시지는 사용자가 애플리케이션을 실행할 때 가장 많이 사용하는 방법 중 하나이며,
안드로이드 시스템 내부는 각종 인텐트와 인텐트 리시버로 구현되어 있다.
+ 서비스 [ Service ]
액티비티(Activity), 컨텐트 프로바이더(Content Provider), 인텐트 리시버 등은
필요한 시간동안만 동작하는 구성요소이며, 언제든지 종료될 가능성이 있다.
이러한 서비스는 컴퓨넌트 화면에 보이지 않은 채 실행되며, 여러분의 데이터 소스와 화면에
보이는 액티비티들을 업데이트하고 알림(notifications)을 생성한다.
즉, 애플리케이션이 가진 액티비티가 활성 상태가 아니거나 화면에 보이지 않더라도 계속 실행되어야
할 필요가 있는 정규적인 처리를 수행하는데 사용된다.
즉, 윈도우의 서비스 처럼 백그라운드에서 돌아가는 구성 요소를 서비스 라고 생각하면된다.
ex. 수신 MAIL 체크 프로그램
MP3 음악 프로그램 ( 다른 작업중 백그라운드에서 계속 음악 재생 )
+ 브로드캐스트 리시버 [ Broadcast Receivers ]
인텐트 브로드캐스트의 소비자이다.
이는, 수신되는 인텐트에 반응해 자동으로 애플리케이션을 시작 시키며,
이벤트 중심 애플리케이션에 적합하도록 만들 것이다
ex. 하드웨어 상태의 변경 ( SD카드 삽입 )
외부에서 데이터 수신 ( SMS 문자 메세지 )
+ 알림 [ Notifications ]
알림(Nontificatons)사용자 알림 프레임워크이며, 이는 사용자의 현재 액티비티가 가진 포커스를
빼앗거나 방해함 없이 사용자에게 신호할 수 있도록 해준다.
이는 서비스나 브로드캐스트 수신자에서 사용자의 주의를 끌기 위해 선호되는 기법이다.
ex. SMS 메시지 수신 이나 전화가 왔을 경우 진동, 소리, 아이콘 등으로 표시.
이처럼 안드로이드에서는 각 애플리케이션 컴포넌트들 간의 의존성을 분리함으로써, 컨텐트 프로바이더나
서비스 같은 개별 요소를 다른 애플리케이션과 공유하고 주고받을 수 있다.