我的前同事开发了一种在后台播放音乐的服务。但是,如果用户想要退出程序,则应用程序调用代码以停止服务。服务停止但我在覆盖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服务方法
答案 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);