2012-01-03 4 views
7

안드로이드에서 intentservice을 중지하는 방법을 알려줄 사람이 있습니까?안드로이드에서 intentservice를 중지하는 방법?

stopservice을 사용하여 intentservice를 중지하면 작동하지 않습니다.

나는 웹 사이트를 탐색했지만 아무도이 질문에 대한 명확한 답변을 제공하지 않았습니다.

답변

5

서비스 내에서 stopSelf()으로 전화 해보십시오. documentation은 일부 프로세스가 완료되는 데 오랜 시간이 걸릴 수 있으므로 서비스가 중단 될 가능성이 가장 높습니다. 아마 그걸 살펴봐야 할 것입니다. 모든 요청이 완료되면 서비스가 중단됩니다.

+0

활동을 중단 할 수 있습니까? – user1127497

+1

내가 말했듯이,'stopService'가 도움이되지 않으면, 프로세스가 그것을 멈추고 있습니다. protected abstract void onHandleIntent (Intent intent) API Level 3 이 메소드는 처리 요청을 가진 작업자 스레드에서 호출된다. 한 번에 하나의 인 텐트 만 처리되지만 다른 응용 프로그램 논리와 독립적으로 실행되는 작업자 스레드에서 처리가 수행됩니다. 따라서이 코드가 오랜 시간이 걸리면 동일한 IntentService에 대한 다른 요청을 보류하게되지만 다른 것은 요구하지 않습니다. 모든 요청이 처리되면 IntentService 자체가 중지되므로 stopSelf()를 호출하면 안됩니다. ' –

+2

의미합니까? stopService를 호출하면 intentservice에 인 텐트가 전송됩니다. Intentservice가 이미 큐에 여러 개의 인 텐트를 가지고있는 경우, "stopservice intent"는 해당 인 텐트가 처리 될 때까지 처리되지 않습니다. – user1127497

5

IntentService은 마지막 인 텐트가 onHandleIntent(Intent)에 의해 처리 될 때 중지되도록 제작되었습니다. 즉, 중지 할 필요가 없습니다. 완료되면 자체 중지됩니다.

1

documentation에 따르면 Android는 모든 시작 요청이 처리 된 후 서비스를 중지하므로 stopSelf()를 호출 할 필요가 없습니다.

1

누군가가 동일한 문제가있는 경우에 회신. <yourContext>.stopService(intent)으로 전화 할 경우 intent이고 인 텐트 개체가 서비스를 시작하는 데 사용 되었다면 작동합니다.

1

IntentService는 작업 대기열에있는 모든 요청이 처리 된 경우에만 중지됩니다. 문서 당, IntentService 클래스 "모든 시작 요청이 처리 된 후 서비스가 중지되므로 전화 stopSelf() "

관련 문제