首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用工作计划程序管理定期任务?

用工作计划程序管理定期任务?
EN

Stack Overflow用户
提问于 2017-02-24 20:57:39
回答 1查看 2.3K关注 0票数 1

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

-if --然后循环被重复(收集、发送到服务器和调度下一个数据收集)

*如果没有,那么下次收集数据的时间安排在下一次有可用的internet连接时

我尝试使用的:

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

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

3)尝试将作业调度器与告警管理器相结合,使作业调度器管理网络需求,告警管理器管理作业的周期性方面。但我没能实现这一点,我觉得这不是正确的方法。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-24 21:12:51

我推荐Evernote的一个名为安卓-作业的图书馆。它处理在JobScheduler上选择21+、Firebase/GcmNetworkManager或AlarmManager以及其他各种事情的所有复杂性。它有一组非常健壮的特性,应该适合您的用例。

例如:

代码语言:javascript
复制
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();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42448150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档