是否有可能在使用它之前杀死IntentService?

时间:2012-09-28 20:57:36

标签: android android-intent android-service

我有一个具有IntentService的应用程序来提供后台处理 - 特别是它从网络中获取数据并将其存储在Sqlite数据库中。 我的活动使用Context.startService()来请求服务更新数据,服务在更新完成后发送本地广播消息。

IntentService使用线程池来完成工作 - 主要是在请求完成之前打开新的Activity时,因此对不同资源的新请求不会阻止等待前一个完成。

一切正常,但是为了防止对同一资源的多个同时请求,我在发送请求后在活动中设置了一个标志,该请求停止发送新请求,直到它从服务返回DONE消息

现在,如果IntentService在操作过程中被终止,它将永远不会发送DONE消息,并且Activity永远不会知道请求未完成,并且不会重新请求资源。这可能吗?如果发生这种情况,是否可以通知活动?

2 个答案:

答案 0 :(得分:3)

  

这可能吗?

只要您捕获所有可能未处理的异常,就不行。组件不会被单独“杀死”,例如,内存回收 - 这是在逐个进程的基础上完成的。

答案 1 :(得分:0)

如果你担心这个,那么在onDestroy of the IntentService中发送一个广播标志(或者只是设置一个断点,这样你就可以看到它是否被击中)。 IntentService旨在作为一个简化的服务来处理它自己的生命周期,所以如果你将工作从服务传递到线程池,那么IntentService可能认为它完成了它的工作 - 你可以在onDestroy中捕获它。

显然不能说如果没有查看代码就会发生这种情况,但是这种机制会让你检查它是否存在。