在后台进行工作有哪些限制?

时间:2018-06-19 14:25:41

标签: android android-workmanager

据我所知,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;
        }
    }

1 个答案:

答案 0 :(得分:1)

  

据我所知,Android允许每15分钟定期启动一次服务

是的,正确。

  

在打ze模式下,在后台完成工作的最长时间为10分钟

尽管我认为我没有看到它的记录,但我认为这是对的,是的。

  

我认为下面的代码避免了这种限制。我说的对吗?

老实说,我不知道它避免限制的原因。如果设备已经处于打ze模式,则doPeriodicallyWork()不会被执行,因为CPU会处于睡眠状态。不允许使用唤醒锁。仅当维护计时器的作业计划程序启动时,它才会在维护时段内运行。

弄清楚这一点的最佳方法当然是对其进行测试。但是,如果您使它起作用,我会感到非常惊讶。如果是这样,值得向Google提交错误:)

因此,我认为与其尝试破解Android,不如将重点放在问题的根源上。为什么首先需要这样做?这些限制并不困扰于Android开发人员,它们是要从不尊重用户电话资源的开发人员中拯救用户。