안드로이드 구성요소, 컴포넌트 (Android Component)

2011. 4. 4. 22:04카테고리 없음






- 안드로이드(android)의 실행 파일은 다른 운영체제(os)의 전통적인 실행 파일과는 달리 구조(structure)가 독특하다.
- 실행 파일에는 프로그램을 구성하는 코드(code)와 데이터(data)가 들어 있으며 메모리(Memory)상으로 올라와 실행을 시작하면 프로세스(process)가 되는 것이 보통이다. 즉, 실행파일과 프로세스가 1:1로 대응되며 응용 프로그램(application)끼리는 서로 완전히 독립적이다.
- 그러나 안드로이드의 실행 파일은 같은 패키지(package)에 속한 자바클래스(java class)와 리소스(resource)의 집합일 뿐이며 프로세스와 반드시 대응되지 않는다.
- 대부분의 경우에는 실행파일이 곧 프로세스이지만 안드로이드에서는 응용 프로그램끼리 서로의 기능을 공유할 수 있다.
- 안드로이드 응용 프로그램은 적절한 권한만 있으면 누구든지 인스턴스(instance)화할 수 있는 4개의 컴포넌트로 구성된다. 
- 그래서 main 같은 유일한 진입점이 따로 없으며 처음으로 생성되는 인스턴스의 생성자가 실질적인 진입점이 된다.


@ Component 
 
 * 액티비티(Activity) : 사용자 인터페이스(UI)를 구성하는 기본 단위
일단 윈도우(window)와 유사한 개념으로 생각하되 정확하게 같지는 않으며 윈도우보다는 더 큰 개념이다. 눈에 보이는 화면 하나가 액티비티이며 여러 개의 뷰(view)들로 구성된다. 응용 프로그램(application)은 필요한 만큼의 액티비티를 가질 수 있으며 그 중 어떤 것을 먼저 띄울지를 지정한다.

* 서비스(Service) : UI가 없어 사용자 눈에 직접적으로 보이지 않으며 백그라운드(Background)에서 무한히 실행되는 컴포넌트
전형적인 예로 미디어(Media) 플레이어를 들 수 있는데 비활성화된 상태라도 노래는 계속 재생되어야 한다. 그 외에 네트워크 감시나 백그라운드 계산 등에 서비스가 활용된다. UI가 없으므로 사용자의 명령을 받아들일 수 있는 액티비티와 연결해서 사용된다.

* 방송 수신자( BR : Broadcast Receiver ) : 시스템(System)으로부터 전달되는 방송을 대기하고 신호 전달시 수신하는 역할
예를 들어 배터리가 떨어졌다거나 사진을 찍었다거나 네트워크 전송이 완료되었다거나 하는 신호를 받는다. 신호만 대기할 뿐 UI를 따로 가지지는 않으므로 방송 수신시 방송의 의미를 해석하고 적절한 액티비티를 띄우는 역할을 한다.

* 컨텐트 제공자( CP : Content Provider ) : 다른 응용 프로그램을 위해 자신의 데이터(data)를 제공 
- 안드로이드는 보안(Security)이 엄격하여 다른 응용 프로그램의 데이터를 함부로 액세스(access) 하지 못하도록 되어 있다. 응용 프로그램 간에 데이터를 공유할 수 있는 합법적인 유일한 장치(device)가 바로 컨텐트 제공자이다. 전형적인 예가 데이터베이스(database)이며 주소록도 CP로 제공된다.

- 응용 프로그램의 컴포넌트 구성은 매니페스트(manifest)라는 설정 파일에 저장 및 관리되며 최초 실행시 어떤 액티비티를 띄울 것 인가도 매니패스트에서 지정한다.


@ 인텐트 ( Intent )

- 4가지 컴포넌트들은 서로 독립적으로 동작하므로 상호 간의 통신을 위한 장치가 필요한데 이 역할을 인텐트(intent)가 담당
- 인텐트는 컴포넌트 간의 통신 수단이며, 메시지(Message)에 대한 상세한 정보를 가짐
- 예를 들어 주소록 목록 액티비티에서 편집 액티비티를 호출할때 누구의 주소를 어떤 식으로 편집하라는 지시가 인텐트에 실려 전달됨



* Android Components (Eng ver)
 
[User Interaction] Activity
UI component typically corresponding to a screen
 - E.g. Contacts: 3 activities: View contacts, Send message, Edit contact

[Service Provider] Service
Background process without UI (e.g. mp3 player)
 - Messages can be sent from and to a service

[Data Provider] Content Provider
Enables applications to share data
 - E.g. Contacts are provided to all applications

[System Event Listener] Broadcast Receiver
Responds to external events, can wake up your process
 - Phone rings, network activity established, time controlled
 
* Intent
- Intents are used to move from activity to activity
- Intent describes what the application wants to do