Android 完成后被杀死的通知

Android 完成后被杀死的通知,android,notifications,activity-finish,Android,Notifications,Activity Finish,我有一个服务类,播放背景音乐,当我从应用程序中出来时,音乐也会播放,通知也会按我的要求显示。我有两页。1(主要活动)和2(另一活动)。现在我需要从(2)开始(1),所以我开始活动(1)并调用活动(2)的finish。我的控制转到(1),按下按钮选择歌曲并添加到播放列表,然后再次启动活动(2)并在(1)上调用finish。我这样做是因为如果没有完成,如果我按下返回键(2),我会再次得到(1)我添加了我不想要的歌曲的地方。 现在,如果我转到(1)并播放歌曲,然后按back,通知将取消,音乐将停止。我

我有一个服务类,播放背景音乐,当我从应用程序中出来时,音乐也会播放,通知也会按我的要求显示。我有两页。1(主要活动)和2(另一活动)。现在我需要从(2)开始(1),所以我开始活动(1)并调用活动(2)的finish。我的控制转到(1),按下按钮选择歌曲并添加到播放列表,然后再次启动活动(2)并在(1)上调用finish。我这样做是因为如果没有完成,如果我按下返回键(2),我会再次得到(1)我添加了我不想要的歌曲的地方。 现在,如果我转到(1)并播放歌曲,然后按back,通知将取消,音乐将停止。我不知道会出什么问题。有人能帮忙吗

活动1:

@Override
public void onDestroy() {

    if (musicBound) {

        getSherlockActivity().unbindService(musicConnection);
        musicBound = false;

    }

    Log.d(TAG, "on destroy=" + musicSrv.isPlaying()); 
    if (musicSrv != null && musicSrv.isPlaying() == false) { //doesnt go inside still music stops and not killed
        getSherlockActivity().stopService(playIntent);
        musicSrv.cancelNotification();
        musicSrv = null;
    }
    countTime = 0;

    super.onDestroy();

}

@Override
public void onStart()

{
    super.onStart();

    if (playIntent == null) {
        playIntent = new Intent(getSherlockActivity(), MusicService.class);
    }

    getSherlockActivity().bindService(playIntent, musicConnection,
            Context.BIND_AUTO_CREATE);

    getSherlockActivity().startService(playIntent);

}

另外,我不会在任何地方给stopForeground或stopService打电话。如果未调用finish,这段代码可以正常工作。为什么结束会破坏这里的东西?困惑

如果使用
bindService()
启动服务,则调用
unbindService()
时,服务将被销毁。如果不希望出现这种行为,只需使用
startService()
启动它,但请记住在可以销毁时调用
stopService()
(或从服务中调用
stopSelf()

请参阅有关的文档。小摘录:

  • Started-当应用程序组件(如活动)通过调用startService()启动服务时,服务即被“启动”。一旦启动,服务可以无限期地在后台运行,即使启动它的组件已被销毁
  • 绑定-当应用程序组件通过调用bindService()绑定到服务时,服务被“绑定”。(…)绑定的服务只有在另一个应用程序组件绑定到它时才能运行。多个组件可以一次绑定到服务,但当所有组件都解除绑定时,服务将被销毁
简言之,如果您反转这两条线,它应该会起作用:

bindService(playIntent, musicConnection, Context.BIND_AUTO_CREATE);
getSherlockActivity().startService(playIntent);

按照你的建议做了,但还是一样的问题。歌曲正在后台播放,但通知被杀死。为什么要破坏一切呢。我也注释掉了onDestroy中的所有代码,但仍然不知道通知是如何得到的killed@RisingUp您是否在您的服务中实施了
onStartCommand()
?是的。我终于解决了这个问题。我在2号呼叫停止服务,这会终止通知。你的建议加上取消停车服务解决了我的问题。谢谢。