2

据我所知,Android 允许每 15 分钟定期启动一次服务,并且在打盹模式下在后台工作的最长时间是 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;
        }
    }
4

1 回答 1

1

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

是,对的。

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

虽然我认为我没有看到它记录在案,但我认为这是正确的,是的。

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

老实说,我看不出它会避免限制的原因。如果设备已经处于打盹模式,doPeriodicallyWork()则根本不会执行,因为 CPU 将处于休眠状态。不允许使用唤醒锁。它只会在保持计时器的作业调度程序启动时在维护窗口期间运行。

解决这个问题的最好方法当然是尝试并测试它。但如果你让它发挥作用,我会感到非常惊讶。如果是这样,值得为 Google 提交一个错误 :)

所以,我认为与其尝试破解 Android,不如关注问题的根源。为什么你首先需要这样做?这些限制并不是为了困扰Android开发者,他们是为了从不尊重用户手机资源的开发者手中拯救用户。

于 2018-06-19T15:16:37.357 回答