的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())
我的测试程序:
- 打开我的应用程序
- 使用
adb shell dumpsys jobscheduler
获得活动作业名单。我的工作可以在列表中看到。 - 通过从最近的列表中滑动我的应用程序来杀死进程。
- 使用相同的命令,并发现我的工作已经结束。
-
jobScheduler.allPendingJobs.size
变为0. - 重新打开我的应用程序。
- 我的工作仍然不存在于活动工作清单中,除非我再次手动安排(即使我使用
setPersisted(true)
)。
我的测试环境:
氢OS,安卓7.1.1,targetSdkVersion:26
那是预期的行为?如果我希望作业能够定期运行,即使应用程序被杀,我该怎么办?
答
我发现了这个问题。有一个优化选项可以在应用程序关闭时取消我的所有工作。
它在“设置” - “电池” - “电池优化” - “高级优化”中。 (我的系统语言不是英文,因此它是近似翻译)
是的,这是理想的行为。动作编号3)为用户提供永久停止使用CPU的应用程序的权力。 – Henry
尝试此链接可能会帮助你https://stackoverflow.com/questions/38410309/jobscheduler-setrequirednetworktypejobinfo-network-type-any-not-working –
@AmjadKhan这两个问题是如何相互关联的... – Null