maj*_*jov 9 api android android-jobscheduler android-8.0-oreo
我有一个应用程序可以选择下载文件.为此,我实现了DownloadService,它将首先进行数据库查询以获取下载候选者,然后构建队列以供下载.一旦构建了队列,它将开始逐个处理下载,直到队列为空,然后自己完成.当服务正在运行时,用户可以添加更多下载请求(将ACTION发送到正在运行的服务以重新构建队列).但是我们不再使用后台服务来定位Oreo或更新版本的Android,我希望避免将其作为前台服务实现,以避免在确定下载队列时显示通知而不进行实际的文件下载.
我试着schedule它setOverrideDeadline(0)使用JobScheduler的API,但是,而不是更新正在运行的作业,旧的被破坏,而新的创造.我也试图enqueue JobWorkItem替代,但onStartJob中JobService(其中,我应该出队工作)如果作业已在运行,所以我不能用新的请求更新它不叫.
编辑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的情况下继续向正在运行的作业发布新请求(操作)吗?(没有第三方图书馆)
| 归档时间: |
|
| 查看次数: |
346 次 |
| 最近记录: |