Android服务onCreate被多次调用而不调用onDestroy

时间:2011-08-26 22:13:12

标签: android service oncreate ondestroy

在我的应用中,我使用服务与我们的服务器进行通信。该服务产生了几个消息队列线程来处理具有不同优先级的任务。

这个模型已经使用了大约一年没有大问题。但是,最近,我发现我的服务类的onCreate被多次调用了一段时间。永远不会在两次onDestroy次来电之间调用onCreate。因此,我没有机会杀死现有的线程。一旦发生这种情况,服务内部就会出现重复的线程。

我唯一改变的是运行服务,因为前台服务是用户登录应用程序。我想知道前台服务是否会导致问题。

有什么想法吗?

3 个答案:

答案 0 :(得分:12)

当我的服务使用与活动相同的进程时(默认),我遇到了同样的问题。但当我使用另一个进程时,没有更多的问题。我编辑了我的AndroidManifest.xml,如下所示......(添加了 android:process 属性)

<service android:name="kr.co.pkbio.binoo.CacheFileManagerService" android:process=":kr.co.pkbio.binoo.service"/>
<service android:name="kr.co.pkbio.binoo.ActivityStackManagerService" android:process=":kr.co.pkbio.binoo.service"/>

请参阅http://developer.android.com/guide/topics/manifest/service-element.html了解相关信息。

答案 1 :(得分:0)

当我处理蓝牙服务时(问题发生在开发期间),我遇到了完全相同的问题。当我断开设备并杀死ADB时,它没有再次发生,onCreate只被调用一次。我认为这是一些错误,因为它不时发生。但也许你的问题略有不同......

答案 2 :(得分:0)

这可能对某人有用。 在我的一个活动中,通过onSaveInstanceState方法中的包存储地图时,我遇到了同样的问题。我相信因为地图包含对应用程序其他部分中使用的对象的引用(其中一个是我的服务),每次我离开所述活动时,我的服务将重新开始。

我猜这是android OS恶作剧。