Android正在创建我的服务的多个实例

Android正在创建我的服务的多个实例,android,service,Android,Service,在我的Android应用程序中,我希望能够在后台播放一些音频。我想在服务中使用MediaPlayer正是我所需要的。因此,我在Android开发者网站上创建了一项服务,几乎遵循谷歌的示例代码。但是,我的问题是,每当启动一个试图绑定到服务的新活动时,就会启动一个新服务(或者至少会重新调用onCreate)。我已经通读了文件,我所做的应该是完全合法的。有人能提供一些进一步的见解吗?谢谢 public class PlayerService extends Service implements Med

在我的Android应用程序中,我希望能够在后台播放一些音频。我想在服务中使用MediaPlayer正是我所需要的。因此,我在Android开发者网站上创建了一项服务,几乎遵循谷歌的示例代码。但是,我的问题是,每当启动一个试图绑定到服务的新活动时,就会启动一个新服务(或者至少会重新调用onCreate)。我已经通读了文件,我所做的应该是完全合法的。有人能提供一些进一步的见解吗?谢谢

public class PlayerService extends Service implements MediaPlayer.OnPreparedListener, MediaPlayer.OnErrorListener, MediaPlayer.OnBufferingUpdateListener {

public class PlayerBinder extends Binder {
    PlayerService getService() {
        return PlayerService.this;
    }
}

private final IBinder mBinder = new PlayerBinder();

public IBinder onBind(Intent intent) {
    return mBinder;
}
从我的活动中,我从
onCreate

private void doBindService() {
    this.bindService(new Intent(this, PlayerService.class), connection, Context.BIND_AUTO_CREATE);
}

当您使用
bindService
时,您的
服务将被创建并绑定到
活动的生命周期中。这意味着当您的
活动
被销毁时,您的
服务也会被销毁

如果您想让
服务保持启动状态,必须首先调用
startService(Intent)
。例如,您可以在应用程序中调用它
onCreate()

在此之后,您仍然可以绑定到
服务
,当您解除绑定时,它将保持启动状态,直到Android决定终止您的进程,或者如果您从代码中的某个地方调用
stopService(Intent)
stopSelf()

为了获得更好的效果,并且不间断地播放音乐,您应该将
服务设置为在前台模式下运行(请参阅)

请记住,Android仍有可能终止您的进程并停止音乐播放,但如果您处于前台模式,则可能性非常小