WorkManager setRequiresDeviceIdle令人困惑

问题描述 投票:1回答:1

我已经实施了一个预定的工作经理。我的想法是每2个小时完成一个过程。但我需要保证执行。根据工作经理的文档,每个入队流程都将得到保证。

但现在这个setRequiresDeviceIdle让我感到困惑。文档中声明默认情况下setRequiresDeviceIdle设置为false。所以我假设如果设备处于空闲模式,我的进程将无法工作。

并且空闲模式=当手机屏幕关闭一段时间。

但是,如果我将此setRequiresDeviceIdle设置为true。我假设现在它只在设备处于空闲模式时才有效。

即使设备处于空闲状态或闲置状态,我也希望进程完整。我现在应该怎么做?

android android-workmanager workmanagers
1个回答
1
投票

如果你通过WorkManager Docs,你会发现:

requiresDeviceIdle boolean:如果设备必须空闲以运行工作,则为true

如果你通过true,这意味着只有当设备在idle state时才会执行你的工作。

如你所说,你希望你的任务永远执行。因此,你应该在false传递setRequiresDeviceIdle()

注意:您的任务不必在2小时后完全执行。根据DOCS,你的任务可能会推迟到下一个maintenance window。你的任务肯定会被执行,但持续时间不会是2小时。它可能比这更多一点。

在打盹模式下,系统会通过限制应用程序访问网络和CPU密集型服务来尝试节省电池电量。它还可以防止应用程序访问网络并延迟其作业,同步和标准警报。

系统会定期退出Doze一段时间,让应用程序完成其延期活动。在此维护窗口期间,系统将运行所有挂起的同步,作业和警报,并允许应用程序访问网络。

如果您不想在任何时候执行任务,那么您可以使用Alarm ManagersetExactAndAllowWhileIdle()。但是这种做法不鼓励,因为它对电池性能不利。

© www.soinside.com 2019 - 2024. All rights reserved.