gpt4 book ai didi

android - 使用 Job Scheduler 管理周期性任务?

转载 作者:行者123 更新时间:2023-11-30 00:41:52 27 4
gpt4 key购买 nike

基本上我想做的是,当有互联网连接时,然后从传感器收集值并安排下一次从传感器收集数据的时间,假设是 5 分钟(这个间隔取决于当前的 Activity :步行、运行。 ..). 5 分钟后,系统检查是否有互联网连接:

-如果有则重复这个循环(收集,发送到服务器并安排下一次数据收集)

*如果没有,则下一次收集数据的时间安排在下一次有可用的互联网连接时

我尝试使用的是:

1) 我想为 api<21 使用广播接收器,为 api>=21 使用作业调度程序。对于作业调度程序,我无法设置要求可用网络并同时使作业成为周期性的,因为这样无论是否满足要求,作业都会在周期结束后运行。

2)我试图让作业服务在当前作业结束后设置下一个作业,但应用程序运行时就好像那部分代码不存在一样(它只运行了一次)

3) 我试图以某种方式将作业调度程序与警报管理器结合起来,使作业调度程序管理网络需求,而警报管理器管理作业的周期性方面。但是我没有实现这个,我觉得这不是正确的方法。

如果有人能指导我找到更好的方法来处理这个问题,我将非常感激,因为我已经花了很长时间试图解决这个问题。

最佳答案

我会推荐来自 Evernote 的图书馆,名为 android-job .它处理在 21+ 上选择 JobScheduler、Firebase/GcmNetworkManager 或 AlarmManager 以及各种其他事情的所有复杂性。它具有一组非常强大的功能,应该适合您的用例。

例如:

int jobId = new JobRequest.Builder(DemoSyncJob.TAG)
.setExecutionWindow(30_000L, 40_000L)
.setBackoffCriteria(5_000L, JobRequest.BackoffPolicy.EXPONENTIAL)
.setRequiresCharging(true)
.setRequiresDeviceIdle(false)
.setRequiredNetworkType(JobRequest.NetworkType.CONNECTED)
.setExtras(extras)
.setRequirementsEnforced(true)
.setPersisted(true)
.setUpdateCurrent(true)
.build()
.schedule();

关于android - 使用 Job Scheduler 管理周期性任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42448150/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com