目前,我需要一个绑定(音乐)服务,因为我需要与它进行交互。但是我也希望即使所有组件都解除绑定,它也不会停止。
正如Android开发者指南所说:
"[...] 多个组件可以同时绑定到服务中,但当它们全部解除绑定时,该服务将被销毁。"
指南还说:
"[...] 您的服务可以双向工作 - 它可以启动(无限期运行)并且允许绑定。"
在我的应用程序中,服务在应用程序启动时启动。我希望只有用户单击我在自定义通知中显示的关闭按钮才能销毁此服务。但是当前,当我销毁我的MainActivity时,服务也会停止。
这是我现在的情况,在我想创建我的服务时调用:
public void createServiceConnection(){
musicConnection = new ServiceConnection(){
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
MusicService.MusicBinder binder = (MusicService.MusicBinder)service;
musicSrv = binder.getService();
attachMusicService();
}
};
}
...调用了这个函数:
public void attachMusicService(){
playerFragment.setMusicService(musicSrv);
musicSrv.attach(context); //need this for my listeners, nevermind
bindService(context);
}
...它调用了这个函数:
public void bindService(Context act){
if(playIntent==null){
playIntent = new Intent(act, MusicService.class);
act.startService(playIntent);
act.bindService(playIntent, musicConnection, Context.BIND_AUTO_CREATE);
}else{
act.startService(playIntent);
act.bindService(playIntent, musicConnection, Context.BIND_AUTO_CREATE);
}
//finished. I can do stuff with my Service here.
}
我是否理解错误? 我觉得服务应该在活动被销毁后继续运行,因为我首先创建了一个已启动的服务,然后绑定到它。