我有一个简单的activity
,它将connection
绑定到IntnetService
。该服务只播放MediaPlayer
。我在服务中实现了onDestroy
。但是在按下主活动之后,我希望服务像往常一样运行,因为IntentService假设在分离线程中在后台运行,但是在调试后我意识到onDestory
类中的IntentService
活动调用并且破坏了其中的媒体播放器。我可能错在哪里?
这是我的Activity
public class MainActivity extends AppCompatActivity{
private void startAudio() {
Intent intent = new Intent(Intent.ACTION_SYNC, null, this, PlayerService.class);
bound = bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
}
}
这是我的Service
:
public class PlayerService extends IntentService{
@Override
public void onDestroy() {
mediaPlayer.pause();
mediaPlayer.reset();
mediaPlayer.release();
}
}
答案 0 :(得分:1)
Intent服务有一个队列,该队列对传入的意图进行排队,并逐个执行这些意图所请求的操作。有一次,这个服务的队列是空的,即它已经完成了它停止的意图所请求的所有动作,并在它收到另一个意图时再次启动。
由于您的服务没有任何处理意图,因此它不再存在。这里你需要的是Sticky Service,即使它没有任何动作也可以继续。
答案 1 :(得分:1)
bindService用于绑定服务,当服务没有客户端/连接时,服务停止。这时,当活动被破坏,服务也被破坏
IntentService应该在分离的线程中在后台运行,直到并且除非它有效。但是在这里,它没有得到工作,因此被破坏。