JobScheduler作业在被杀后被取消

时间:2017-10-14 08:13:07

标签: android android-jobscheduler

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

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))。
  8. 我的测试环境:

    Hydrogen OS,Android 7.1.1,targetSdkVersion:26。

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

1 个答案:

答案 0 :(得分:2)

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

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