我正在尝试制作音乐播放器。为此,我正在创建一个管理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;
}
}
答案 0 :(得分:1)
您需要检查运行与否的onStart()。如果服务已在运行,那么您需要绑定它。但是在您当前的代码中,您每次都会创建服务。
您应该尝试使用Service.START_STICKY来检查服务是否已在运行。你可以看到: Service ,start 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);
}