android l job scheduler api,Jobscheduler API android L.

在创建使用JobScheduler API的应用中,遇到一个问题:即使设置了setRequiresCharging(true),服务在设备断电后仍按3秒周期运行。问题在于,即使有电池限制,JobScheduler仍会根据周期性约束安排作业。当取消周期性约束时,服务正常运行。目前尚无直接解决方案,但提供了问题的背景和原因。
摘要由CSDN通过智能技术生成

我正在创建一个使用jobscheduler API的应用程序.

我想定期运行服务,并在设备充电时.这是代码.

JobInfo.Builder builder = new JobInfo.Builder(kJobId++, mServiceComponent);

builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);

builder.setPeriodic(3000);

builder.setRequiresCharging(true);

mTestService.scheduleJob(builder.build());

现在,当我运行此设备并拔下设备时,该服务仍然在3秒后运行.设置setRequiresCharging没有任何效果.

当我注释掉builder.setPeriodic(3000)时,它完全正常.我不确定我哪里出错了.

解决方法:

为了在内部识别每个作业,当新作业落在调度程序上时,框架会创建一个新的JobStatus. JobStatus做的第一件事就是检查你的工作是否有定期的更新间隔.如果是,它使用periodic update interval来确定将来必须运行作业的最新点,或者换句话说,if it has a deadline constraint.

工作被视为ready to be executed的标准之一,它已满足所有约束条件或工作截止日期已过期.有关更多信息,请参见JobStatus.isReady.

JobSchedulerService添加了几个用于跟踪作业何时运行以及何时必须停止的StateControllers.其中一个控制器是TimeController,其中:

sets an alarm for the next expiring job, and determines whether a

job’s minimum delay has been satisfied

To determine if a new alarm should be scheduled,TimeController检查您的作业是否有任何时间延迟或截止时间限制,如果您设置了定期更新间隔,则似乎会给出所有作业.

我希望这可以帮助你至少理解为什么你的工作继续被安排,尽管你的电池限制.但是我目前还没有一个可以直接解决这个问题的解决方案.

标签:android,android-5-0-lollipop,android-jobscheduler

来源: https://codeday.me/bug/20190624/1276462.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值