我使用WorkManager
实现了一些重复性任务,当我积极使用手机时,它在白天工作得很好(每段时间运行我的代码,早晚有几分钟)。晚上会跳过很多时段,我想知道为什么会这样,以及如何解决这个问题。
fun startService() {
val constraintsBuilder = Constraints.Builder()
constraintsBuilder.setRequiredNetworkType(NetworkType.CONNECTED)
val constraints = constraintsBuilder.build()
val work = PeriodicWorkRequest.Builder(
HttpWorker::class.java,
40, TimeUnit.MINUTES,
15, TimeUnit.MINUTES
).setConstraints(constraints)
.addTag("TAG_WORKER")
.build()
WorkManager.getInstance().enqueueUniquePeriodicWork(
HttpWorker::class.java.simpleName,
ExistingPeriodicWorkPolicy.REPLACE,
work
)
}
结果如下所示:
---
---
---
---
---
...
---
---
---
---
---
---
...
这肯定与设备活动有关,还请注意,我禁用了应用程序的节能功能(我的设备是2018年Android 9.0推出的三星Galaxy新款)。我该怎么做才能忽略夜间的许多跳过的时段(当设备根本不使用时)。
附言:我的应用程序不在谷歌播放,所以没有任何黑客问题(但没有根)
根据文件
解决方案
公共约束。生成器设置要求设备空闲(布尔要求设备空闲)设置设备是否应该空闲,以便工作请求运行。默认值为false。
true:如果设备必须空闲才能运行工作
因此,如果添加此约束。你的工作将在晚上进行!
constraintsBuilder.setRequiresDeviceIdle(true)
我需要每X分钟从服务器同步一次数据,即使在关闭应用程序之后也是如此。我使用WorkManger和PeriodicWorkRequest每X分钟触发一次。这是每X分钟触发一次,即使我们关闭了应用程序。退出应用程序后我面临的问题是如何访问静态类或变量? 示例代码: 同步类。反恐精英: 常数。反恐精英: 当应用程序处于前台和后台状态,但由于DependencyService类为null而在终止状态下失败
WorkManager是一个库,用于对满足其约束后保证执行的工作进行排队。 因此,在查看了Constraints类之后,我还没有找到任何函数来为工作添加时间约束。例如,我希望在早上8:00AM开始执行一个工作(该工作可以是OneTimeWorkRequest或PerioadWorkRequest两种类型中的任何一种)。如何添加约束以使用WorkManager调度此工作。
如果Spring批处理作业业务逻辑出现ArrayIndexOutOfBoundsException,我必须从我的自定义映射器FieldSetMapper of reader FlatFileItemReader中跳过一个自定义异常(CSVFieldMappingException)。为此,我添加了作业步骤的配置,如下所示。 但这不起作用,因为每当我抛出自定义RunTimeException时,就会
我面临以下问题:我的类继承了。这个工作器的逻辑足够复杂,事实上调用了里面的一堆其他例程并捕获()几个的结果,例如: 问题: 我可以以某种方式将收集的值(值是简单的原始对象)返回/放置给? 或者作为一种选择-我如何在其他类中收听/收集这些-在我的之外? 因为,
我正在这样做: 但是请求在服务器上不起作用。。。在服务器上,我应该看到发送的数据,但我看不到它们 我也试过这个: 而且它是有效的。。。有什么问题吗?
我从某个时候起就被这个问题困扰着。 我使用的是spring batch 3.0.7 问题是在ItemWriter中的一个记录中出现org.springframework.dao.DataIntegrityViolationExcue的情况下,组块(组块大小=10)中的其余记录也不会插入到数据库中,即使在提供了skipPolicy之后(对于所有异常返回true)。 我的理解是,如果在提交整个大块时出