永远不会调用onDestroy服务

时间:2014-09-26 11:36:40

标签: android service

我将一个本地服务添加到我的MainActivity,在onResume中,我做了这个

@Override
public void onResume() {
    super.onResume()
    boolean is_start = isMyServiceRunning(MyService.class)
    if (is_start) {
        bindMyService()
    } else {
        startMyService()
        bindMyService()
    }
}

在onPause中,我只是简单地执行“unBindMyService”操作。

另外,我添加了Context.BIND_AUTO_CREATE标志来绑定服务,结果很奇怪。

  1. 我可以通过logcat看到MyService的“onCreate”和“onBind”,这很顺利
  2. 当我切换到另一个活动或应用程序时,会调用“Unbind”,这是正确的!
  3. 当我在设置中“强制停止”服务时,响应中会调用服务的“onDestroy”,即可。
  4. 当我从应用程序的“最近列表”中删除应用程序时,没有调用该服务的“onDestroy”,我可以解释为该服务未终止。还行。
  5. 我无法解释的是,在4之后,我再次启动了我的应用程序,我注意到该服务的“onCreate”和“onBind”被调用,但没有一个“onDestroy”服务。即使“is_start”为真,也会在没有调用“onDestroy”的情况下再次创建服务。
  6. 那么4到5之间发生了什么?这项服务还活着还是已经死了?

1 个答案:

答案 0 :(得分:1)

你需要停止服务来调用onDestroy。 使用此:

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    stopService(new Intent(this,MyService.class));
}