IntentService 在 activity 停止后停止

IntentService stop after activity stops

我有一个简单的 activity,它将 connection 绑定到 IntnetService。该服务仅播放 MediaPlayer。我在服务中实现了 onDestroy。然而,在主 activity 中按回后,我期望服务像往常一样 运行,因为 IntentService 在后台分离线程中假设 运行,但调试后我意识到 onDestory activity 调用 IntentService class 并销毁其中的媒体播放器。大概哪里错了?

这是我的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();
    }
}

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

因为您的服务没有任何要处理的意图,所以它不复存在。您在这里需要的是一个粘性服务,即使它没有任何要执行的操作也会继续。

bindService 用于绑定服务,服务在没有 clients/connections left.Here 时自行停止,因为 activity 被销毁,服务也被销毁

IntentService 应该在后台 运行 在单独的线程中,除非它在这里有 work.But,否则它不会工作并因此被销毁。