posted by Kyleslab 2012. 11. 6. 18:43

IntentService
이것은 모든 start요청을 한번에 하나씩 처리하기 위해 worker thread를 사용하는 서비스의 서브클래스이다. 이것은 서비스가 다중 요청들을 동시에 처리해야하는 경우가 아니라면 최적의 선택사항이다. 할 일은 onHandlerIntent()를 구현하는 것이다. 이 메소드는 백그라운드 작업을 할 수 있도록 각각의 시작요청을 위한 인텐트를 수신한다. 

다음 섹션은 이러한 클래스들 중 하나를 사용해서 서비스를 구현하는 방법을 설명한다.

Extending the IntentServie class
대부분의 시작된 서비스들은 동시에 다중 요청(사실상 위험한 다중스레딩 시나리오가 될 수 있다.)을 처리할 필요가 없기 때문에 IntentService 클래스를 사용하여 서비스를 구현하는 것이 아마도 최선일 것이다.

IntentService는 다음과 같은 것을 한다.

1. onStartCommand()에 전달된 모든 인텐트들을 실행하는 어플리케이션의 메인 스레드에서 분리된 디폴트 worker thread를 생성한다.
2. 한번에 하나의 인텐트를 통과시키는 작업 큐를 생성한다. 그러므로 다중 스레딩에 대해 걱정할 필요가 없다.
3. 모든 시작 요청들이 처리된 후에 서비스를 정지시킨다. 그러므로 stopSelf() 메소드를 호출할 필요가 없다.
4. 널을 리턴하는 onBind()의 디폴트 구현을 제공한다.
5. 작업 큐와 그 다음으로 onHandleIntent() 구현에 인텐트를 전송하는 onStartCommand()의 디폴트 구현을 제공한다.

할 일은 클라이언트에 의해 제공된 작업을 하기 위해 onHandleintent()를 구현하는 것이다. ( 어쨋든 서비스를 위해 작은 생성자를 제공할 필요가 있다.)


출처 : 브린과 페이지(http://brinpage.blogspot.kr/2011/11/services.html)

'Mobile > Android' 카테고리의 다른 글

Fragment(1)  (0) 2012.11.09
생명주기 메소드를 Override할때 super의 위치  (0) 2012.11.08
weight값설정시 최적화  (0) 2012.11.06
한 앱에서 라이브러리와 값 공유  (0) 2012.11.02
BroadcastReceiver  (0) 2012.11.02