Android 在后台工作有哪些限制?

Android 在后台工作有哪些限制?,android,android-workmanager,Android,Android Workmanager,据我所知,Android允许每15分钟定期启动一次服务,在打盹模式下,在后台工作的最长时间是10分钟,但我认为下面的代码避免了这个限制。我说得对吗 public class TestWorker extends Worker { @NonNull @Override public WorkerResult doWork() { new Timer().scheduleAtFixedRate(new TimerTask() {

据我所知,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;
        }
    }
据我所知,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;
        }
    }
老实说,我不明白为什么它可以避免限制。如果设备已处于睡眠模式,则不会执行
doPeriodiCalyWork()
,因为CPU将处于睡眠状态。不允许使用唤醒锁。它将仅在维护窗口期间,当包含计时器的作业计划程序启动时运行

当然,解决这个问题的最佳方法是尝试并测试它。但如果你能成功,我会非常惊讶。如果是这样的话,就值得为谷歌提出一个bug:)


因此,我认为与其尝试破解Android,不如关注问题的根源。你为什么一开始就要这么做?这些限制并不是为了烦扰Android开发者,而是为了从不尊重用户手机资源的开发者那里拯救用户

我已经测试了它手动启用的打盹模式和定时器(连续工作)。我想每15分钟运行一次服务,运行调度程序,每5秒运行一次,获取有关手机的信息,然后在10分钟后睡觉。这听起来不像是你在绕过限制,除非我遗漏了什么。每15分钟运行一个10分钟的任务,该任务每5秒执行一次操作。。这听起来很正常。在这10分钟之后,设备通常会暂停您的任务并进入打盹模式。它不应该允许你无限地执行这个5秒的动作。