如何使用新请求更新正在运行的JobService?

maj*_*jov 9 api android android-jobscheduler android-8.0-oreo

我有一个应用程序可以选择下载文件.为此,我实现了DownloadService,它将首先进行数据库查询以获取下载候选者,然后构建队列以供下载.一旦构建了队列,它将开始逐个处理下载,直到队列为空,然后自己完成.当服务正在运行时,用户可以添加更多下载请求(将ACTION发送到正在运行的服务以重新构建队列).但是我们不再使用后台服务来定位Oreo或更新版本的Android,我希望避免将其作为前台服务实现,以避免在确定下载队列时显示通知而不进行实际的文件下载.

我试着schedulesetOverrideDeadline(0)使用JobScheduler的API,但是,而不是更新正在运行的作业,旧的被破坏,而新的创造.我也试图enqueue JobWorkItem替代,但onStartJobJobService(其中,我应该出队工作)如果作业已在运行,所以我不能用新的请求更新它不叫.

编辑1:我有一个实验性实现,我将使用此示例代码检查我的JobService是否正在运行

private boolean isServiceRunning() {
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)){
        if("com.example.MyJobService".equals(service.service.getClassName())) {
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

如果作业没有运行,我会安排它,但如果它正在运行,我将使用EventBus向此作业发送事件并使用新请求更新作业.但我更喜欢'纯'JobScheduler的API解决方案.

编辑2:我还可以选择并行下载多个文件并更改排队下载的优先级.

有人知道如何在不创建新JobSchedulerAPI的情况下继续向正在运行的作业发布新请求(操作)吗?(没有第三方图书馆)