如何在活动停止时取消绑定服务?

时间:2014-02-10 23:54:51

标签: android service unbind

我正在尝试制作音乐播放器。为此,我正在创建一个管理MediaPlayer对象并播放歌曲的服务。但每次我重新打开我的音乐应用程序时,它都会启动一项新服务并同时播放两首歌曲。如何将Activity绑定到已经运行的服务?

我注意到当我在OnStop()方法中没有调用unbindService(...)时,我的应用程序运行正常。但是我不知道当活动停止时它是否有权不解开。

我这样绑定:

@Override
protected void onStart() {
    super.onStart();

    Intent service = new Intent(this,MyService.class);

    bindService(service, mConnection, Context.BIND_AUTO_CREATE);
}

@Override
protected void onStop() {
    super.onStop();

    if(mBound) {
        unbindService(mConnection);

        mBound = false;
    }
}

2 个答案:

答案 0 :(得分:1)

您需要检查运行与否的onStart()。如果服务已在运行,那么您需要绑定它。但是在您当前的代码中,您每次都会创建服务。

您应该尝试使用Service.START_STICKY来检查服务是否已在运行。你可以看到: Servicestart Sticky or start not sticky

我认为它可以帮助您更新服务类。

答案 1 :(得分:0)

我可以修复它将startService(...)添加到OnStart()方法。我不明白为什么这个固定,但似乎我需要这样做。如果有人知道为什么请添加。谢谢大家的帮助。

这就是OnStart的结果:

@Override
protected void onStart() {
    super.onStart();

    Intent service = new Intent(this,MyService.class);

    bindService(service, mConnection, Context.BIND_AUTO_CREATE);

    startService(service);
}