JobScheduler作业在被杀死后被取消

问题描述 投票:1回答:1

这就是我建立工作的方式:

val builder = JobInfo.Builder(1, ComponentName(this, 
PullDataJob::class.java))
            .setPeriodic(1000L * 60 * 60) // one hour
            .setRequiredNetworkType(NETWORK_TYPE_ANY)
            .setPersisted(true)
jobScheduler.schedule(builder.build())

我的测试程序:

  1. 打开我的应用
  2. 使用adb shell dumpsys jobscheduler获取活动作业列表。我的工作可以在列表中看到。
  3. 通过从“最近”列表中滑动我的应用程序来终止该过程。
  4. 使用相同的命令,发现我的工作已经消失。
  5. jobScheduler.allPendingJobs.size变为0。
  6. 重新打开我的应用。
  7. 我的工作仍然不存在于活动作业列表中,除非我再次手动安排它(即使我使用setPersisted(true))。

我的测试环境:

Hydrogen OS,Android 7.1.1,targetSdkVersion:26。

这是预期的行为吗?如果我想让工作定期运行,即使应用程序被杀,我该怎么办?

android android-jobscheduler
1个回答
2
投票

我发现了这个问题。有一个优化选项可以在我的应用关闭时取消所有工作。

它位于“设置” - “电池” - “电池优化” - “高级优化”中。 (我的系统语言不是英语,所以它是一个近似的翻译)

© www.soinside.com 2019 - 2024. All rights reserved.