2012-01-03 90 views

回答

5

尝试从服务中调用stopSelf()documentation表示某些流程可能需要很长时间才能完成,因此您的服务很可能会等待他们停止。你应该仔细研究一下。一旦所有请求都完成,服务会自行停止。

+0

我能阻止它从一个活动? – user1127497 2012-01-03 09:17:44

+1

就像我说的,如果'stopService'没有帮助,一个过程就会占用它。 '保护抽象无效onHandleIntent(意向意图) 自:API级别3 此方法工作线程上调用与处理请求。一次只处理一个Intent,但处理发生在与其他应用程序逻辑独立运行的工作线程上。所以,如果这段代码需要很长时间,它会阻止对同一个IntentService的其他请求,但它不会阻塞其他任何东西。当所有请求都被处理后,IntentService会自行停止,所以你不应该调用stopSelf()。' – 2012-01-03 09:19:11

+2

你的意思是如果我调用stopService,一个intent将被发送到intentservice。如果intentservice已经在队列中有多个意图,那么在停止意图处理之前,“stopservice intent”将不会被处理? – user1127497 2012-01-03 09:30:46

5

IntentService是建立在自行停止当最后一个目的是通过onHandleIntent(Intent)处理 - 即你不需要停止它,当它完成它停止它的自我。

1

按照documentation的Android停止服务后,都开始请求被处理,所以你从来没有打电话给stopSelf()。

1

迟到的回复,以防有人遇到同样的问题。如果你打电话<yourContext>.stopService(intent)其中intent相同的意图对象,你用来启动服务,那么它会工作。

1

的IntentService旨在停止本身,只有当所有存在于工作队列中的请求已按文档handled.As,IntentService 类“停止所有的服务开始请求被处理后,所以你永远不会有调用stopSelf()”