在我的应用中,我使用服务与我们的服务器进行通信。该服务产生了几个消息队列线程来处理具有不同优先级的任务。
这个模型已经使用了大约一年没有大问题。但是,最近,我发现我的服务类的onCreate
被多次调用了一段时间。永远不会在两次onDestroy
次来电之间调用onCreate
。因此,我没有机会杀死现有的线程。一旦发生这种情况,服务内部就会出现重复的线程。
我唯一改变的是运行服务,因为前台服务是用户登录应用程序。我想知道前台服务是否会导致问题。
有什么想法吗?
答案 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恶作剧。