通知在完成后被杀死

时间:2014-06-19 04:10:14

标签: android notifications activity-finish

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

活动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);

}

P.S。我也没有在任何地方调用stopForeground或stopService。如果没有调用完成,这段代码工作正常。为什么完成会破坏这里的东西?困惑。

1 个答案:

答案 0 :(得分:0)

如果您使用bindService()启动服务,则在致电unbindService()时会将其销毁。如果您不想要这种行为,只需使用startService()启动即可,但如果可以销毁,请记得从服务中调用stopService()(或stopSelf()

请参阅有关started and bound services的文档。小提取物:

  • 已开始 - 已启动服务"当应用程序组件(例如活动)通过调用startService()启动它时。一旦启动,服务可以无限期地在后台运行,即使启动它的组件被销毁。
  • 绑定 - 服务是"绑定"当应用程序组件通过调用bindService()绑定到它时。 (...)只要绑定了另一个应用程序组件,绑定服务就会运行。多个组件可以立即绑定到服务,但是当所有组件解除绑定时,服务都会被销毁。

简而言之,如果你颠倒这两行,它应该可以工作:

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