的jobscheduler工作被取消

问题描述:

这是我建立我的工作:的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))。

我的测试环境:

氢OS,安卓7.1.1,targetSdkVersion:26

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

+0

是的,这是理想的行为。动作编号3)为用户提供永久停止使用CPU的应用程序的权力。 – Henry

+0

尝试此链接可能会帮助你https://stackoverflow.com/questions/38410309/jobscheduler-setrequirednetworktypejobinfo-network-type-any-not-working –

+0

@AmjadKhan这两个问题是如何相互关联的... – Null

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

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