14

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

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

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

有任何想法吗?

4

3 回答 3

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

于 2011-10-16T19:37:46.513 回答
0

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

于 2011-09-28T15:46:13.000 回答
0

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

我猜这是安卓操作系统的恶作剧。

于 2017-11-27T12:05:45.400 回答