【问题标题】:Android service onCreate is called multiple times without calling onDestroyAndroid服务onCreate被多次调用而不调用onDestroy
【发布时间】:2011-08-26 22:13:12
【问题描述】:

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

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

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

有什么想法吗?

【问题讨论】:

  • 同样问题调用stopSelf()服务后自动调用onCreate()多次调用onCreate()方法

标签: android service oncreate ondestroy


【解决方案1】:

当我的服务使用与活动相同的流程(默认)时,我遇到了同样的问题。但是当我让我的服务使用另一个进程时没有更多问题。我编辑了我的 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

【讨论】:

  • 我有一个服务在不同的进程中运行,但偶尔还是会出现这个问题。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 你是怎么解决这个问题的?我有同样的问题。当我离开主应用程序时,我的服务会重新创建。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多