언어/Android

[Android] Service 다루기

정현석 2010. 2. 23. 10:25
안드로이드에서의 서비스란?
1) 일정한 간격으로 어떤 유용한 일을 배경에서 수행하는 배경 프로세스
2) 원격 객체에 대한 인터페이스(응용프로그램 안에서 사용 가능)

Service class를 확장하여 사용 함.

서비스 클래스는 onCreate()메서드와 onStart() Method, onDestroy() Method 등의 Method들을 재정의한다. 그리고 AndroidManifest.xml에서 다른 응용프로그램이 서비스를 시작하거나 배경에서 실행 중인 서비스를 중지하는 데 사용할 서비스 이름을 정의한다.

서비스의 수명주기
어떤 응용프로그램이 Context.StartService() 메서드를 호출하면 System은 Service의 onCreate()를 호출하고 onStart()를 호출한다. 
Context.StartService() -> onCreate() -> onStart()

그러나 Service가 Context.bindService() 메서드를 통해서 어떤 프로세스에 묶여 실행되는 경우에는 시스템이 onCreate()를 호출한 후에 onBind() 메서드를 호출한다. 이 경우에는 onStart()가 호출되지 않음을 기억해야 한다.
Context.bindService() -> onCreate() -> onBind()

서비스의 작업이 끝나면(서비스가 중단되었으면 어떠한 프로세스에도 묶이지 않았으면) 시스템은 onDestroy() 메서드를 호출한다. 서비스는 이 메서드에서 자신이 사용하던 모든 자원을 해제해야 한다.

------------------------------------------------------------------------------------
기타.
AIDL(Android Interface Definition Language)을 통한 원격 인터페이스 정의 방법 및 AIDL을 통해서 정의한 Interface로 객체들을 넘겨주는데 필요한 Parcelable Interface 구현