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

时间:2012-11-29 03:57:00

标签: android service

在我的Android应用中,我希望能够在后台播放一些音频。我认为在服务中使用MediaPlayer应该是我需要的。因此,我在Android开发者网站上完全按照Google的示例代码创建了一项服务。但是,我的问题是,无论何时启动尝试绑定到服务的新活动,都会启动新服务(或者至少重新调用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);
}

1 个答案:

答案 0 :(得分:3)

当您使用bindService时,您的Service已创建并与Activity的生命周期相关联。这意味着当您的Activity被销毁时,Service也是如此。

如果您希望Service保持启动状态,则必须先致电startService(Intent)。例如,您可以在应用程序onCreate()中调用它。

之后,您仍然可以绑定到Service,当您解除绑定后,它将一直保持启动状态,直到Android决定终止您的流程,或者您从某个地方拨打stopService(Intent)stopSelf()你的代码。

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

请记住,Android仍然可以杀死你的进程并停止音乐播放,但如果你处于前台模式,则可能非常小。