活动停止后,IntentService停止

时间:2017-06-28 10:16:34

标签: android service media-player intentservice

我有一个简单的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();
    }
}

2 个答案:

答案 0 :(得分:1)

Intent服务有一个队列,该队列对传入的意图进行排队,并逐个执行这些意图所请求的操作。有一次,这个服务的队列是空的,即它已经完成了它停止的意图所请求的所有动作,并在它收到另一个意图时再次启动。

由于您的服务没有任何处理意图,因此它不再存在。这里你需要的是Sticky Service,即使它没有任何动作也可以继续。

答案 1 :(得分:1)

bindService用于绑定服务,当服务没有客户端/连接时,服务停止。这时,当活动被破坏,服务也被破坏

IntentService应该在分离的线程中在后台运行,直到并且除非它有效。但是在这里,它没有得到工作,因此被破坏。