1

在我的 Android 应用程序中,我希望能够在后台播放一些音频。我认为在服务中使用 MediaPlayer 应该正是我所需要的。因此,我几乎按照 Google 在 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);
}
4

1 回答 1

3

当您使用时,bindService您的Service被创建并与您的Activity. 这意味着当你Activity被摧毁时,你的Service.

如果你想让你Service保持开始,你必须先打电话startService(Intent)。例如,您可以在您的应用程序中调用它onCreate()

之后,您仍然可以绑定到您的Service,并且当您取消绑定时,它将保持启动状态,直到 Android 决定终止您的进程或者您调用stopService(Intent)stopSelf()从代码中的某个位置调用。

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

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

于 2012-11-29T04:10:20.073 回答