안드로이드의 주요 프로그램 유형
안드로이드의 AndroidManifest.xml 파일의 <Application> 엘리먼트에 등록될 수 있는 주요 프로그램 유형은 다음과 같은 것들이 있다.
1. Activity
2. Service
3. Receiver
4. Content Provider
여기서는 Service 라는 프로그램에 대해서 알아본다 ( Service 구현 예제는 여기를 참조 )
1. Service 프로그램의 개념
- 이용자와 상호작용 가능한 UI 가 없다.
- 화면에 나타나지 않고 백그라운드에서 실행된다.
- 실행 중인 Activity는 다른 화면에 가려지면 메모리에서 제거될 가능성도 있지만 Service는 화면이 없기 때문에 백그라운드에서 계속 실행된다.
- 다른 Activity나 Receiver에 의해서도 실행될 수도 있고 시스템 부팅시에 자동으로 실행되도록 설정할 수도 있다.
- 다른 Activity나 Receiver에 포함된 Process 안에서 실행될 수도 있고 독립된 Process안에서 실행될 수도 있다.
- UI 없이 장시간 백그라운드에서 실행되어야 하는 로직을 수행하기에 적합하다.
- 특정 이벤트(메시지, Intent)에 반응하여 다른 Activity에게 메시지를 전달하거나 실행할 수 있다.
- 웹서버에서 실행 중인 서버소켓이 간헐적으로 전달하는 데이터를 무한히 대기하는 시스템도 작성할 수 있다.
- Service를 사용하지 않고 Activity 안에서 Thread를 구현한다면 그 쓰레드는 Activity의 Life Cycle에 종속되어 제한을 받는다.
- Service는 Activity의 Life Cycle에 종속되지 않으므로 안드로이드에서 진정한 Multi-Tasking을 구현할 수 있다.
- 백그라운드에서 처리되어야 할 기능을 가진 프로그램에 해당 기능을 제공하는 용도로 주로 사용된다.
- 안드로이드의 Garbage Collector도 시스템이 제공하는 Service 중에 하나이며 Activity의 영향을 받지 않는 특성을 보여주는 예이다.
2. Service의 선언
AndroidManifest.xml 파일에 다음과 같이 선언해야 하고 해당 클래스는 Service클래스를 상속하는 것이 일반적이다.
<service android:name="yourclasss">
</service>
Service는 자동으로 실행되는 것이 아니므로 다른 Process에서 실행하거나, 부팅시에 시스템에 의해 독립적인 Process로 실행된다.