据我所知,Android允许每15分钟定期启动一次服务,在打ze模式下在后台执行工作的最大时间为10分钟,但是我认为下面的代码避免了这种限制。我说的对吗?
public class TestWorker extends Worker {
@NonNull
@Override
public WorkerResult doWork() {
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
doPeriodicalyWork();
}
}, 0, 5000);
return WorkerResult.SUCCESS;
}
}
答案 0 :(得分:1)
据我所知,Android允许每15分钟定期启动一次服务
是的,正确。
在打ze模式下,在后台完成工作的最长时间为10分钟
尽管我认为我没有看到它的记录,但我认为这是对的,是的。
我认为下面的代码避免了这种限制。我说的对吗?
老实说,我不知道它避免限制的原因。如果设备已经处于打ze模式,则doPeriodicallyWork()
不会被执行,因为CPU会处于睡眠状态。不允许使用唤醒锁。仅当维护计时器的作业计划程序启动时,它才会在维护时段内运行。
弄清楚这一点的最佳方法当然是对其进行测试。但是,如果您使它起作用,我会感到非常惊讶。如果是这样,值得向Google提交错误:)
因此,我认为与其尝试破解Android,不如将重点放在问题的根源上。为什么首先需要这样做?这些限制并不困扰于Android开发人员,它们是要从不尊重用户电话资源的开发人员中拯救用户。