我有一个播放背景音乐的服务类,当我从应用程序中走出来时,音乐播放和通知也会像我想要的那样显示。我有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。如果没有调用完成,这段代码工作正常。为什么完成会破坏这里的东西?困惑。
答案 0 :(得分:0)
如果您使用bindService()
启动服务,则在致电unbindService()
时会将其销毁。如果您不想要这种行为,只需使用startService()
启动即可,但如果可以销毁,请记得从服务中调用stopService()
(或stopSelf()
。
请参阅有关started and bound services的文档。小提取物:
简而言之,如果你颠倒这两行,它应该可以工作:
bindService(playIntent, musicConnection, Context.BIND_AUTO_CREATE);
getSherlockActivity().startService(playIntent);