如何处理在后台停止的服务

时间:2013-07-29 06:44:32

标签: android android-service

我的前同事开发了一种在后台播放音乐的服务。但是,如果用户想要退出程序,则应用程序调用代码以停止服务。服务停止但我在覆盖onDestroy方法时无法处理它

    Activity realAct = context.getParent();
    if (realAct == null) {
        realAct = context;
    }
    ContextWrapper cw = new ContextWrapper(realAct);

    cw.stopService(new Intent(cw, MyPlayerService.class));

编辑: 简而言之,Activity Main启动Activity Sub,然后Activity Sub启动Service。然后我按回按钮,以便Activity Sub完成。当我在Activity Main中时,我会调用stop stopvice代码。因此,不调用onDestroy服务方法

2 个答案:

答案 0 :(得分:0)

再次尝试在您的服务代码中使用类似的方法:

@Override
public void onDestroy()
{
super.onDestroy();
//your code
}

它必须工作!

答案 1 :(得分:0)

您是否尝试在用户退出应用程序时停止服务?

当系统由于资源不足而需要杀死活动时,会调用

onDestroy。仅仅因为您按下了应用程序并不意味着onDestroy会立即被调用。

但是如果你想强制关闭你的应用程序让它自动调用onDestroy,请调用

  

完成()

关于从哪里退出申请。

如果你想在用户按下后退按钮退出时调用onDestroy,请覆盖onBackPressed()并从那里调用finish()。

但实际上,这是一个反模式,所以我建议改用onPause()。

编辑OP编辑:

我认为我们需要了解有关如何实例化服务的详细信息,但这里有一些额外的想法:

您是否正确覆盖了onDestroy并调用了super方法?

如果是这种情况,我能想到的唯一另一种可能性是,您仍然将ServiceConnection对象绑定到设置了BIND_AUTO_CREATE的服务。在删除所有这些绑定之前,服务不会被破坏。

所以一定要做到这两点:

unbindService(conn);
stopService(intent);