在我的应用程序中,我使用服务与我们的服务器进行通信。该服务产生多个消息队列线程来处理具有不同优先级的任务。
这个模型已经使用了大约一年,没有大问题。但是,最近,我发现有时onCreate
我的服务类被多次调用。onDestroy
在两次调用之间永远不会被onCreate
调用。因此,我没有机会杀死现有的线程。一旦发生这种行为,服务内部就会有重复的线程。
我唯一改变的是运行服务,因为前台服务是用户登录应用程序。我想知道前台服务是否会导致问题。
有任何想法吗?
当我的服务使用与活动相同的流程(默认)时,我遇到了同样的问题。但是当我让我的服务使用另一个进程时没有更多问题。我编辑了我的 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。
我在处理蓝牙服务时遇到了完全相同的问题(问题发生在开发过程中)。当我断开我的设备并杀死 ADB 时,它没有再次发生,并且只调用了一次 onCreate。我认为这是一些错误,因为它不时发生。但也许你有一个稍微不同的问题......
这可能对某人有用。在我的一个活动中通过 onSaveInstanceState 方法中的包存储地图时,我遇到了同样的问题。我相信,因为地图包含对应用程序其他部分中使用的对象的引用(其中一个是我的服务),所以每次我离开所说的活动时,我的服务都会重新开始。
我猜这是安卓操作系统的恶作剧。