我已经安排了一个预定的工作经理。我的想法是每2小时完成一个过程。但是我需要保证执行力。根据工作经理的文档,每个入队的过程都将得到保证。
但是现在这个 setRequiresDeviceIdle 让我感到困惑。在文档中指出,默认情况下 setRequiresDeviceIdle 已设置为 false 。因此,我假定的是,如果设备处于空闲模式,则我的进程将无法正常工作。
且空闲模式 =手机屏幕关闭一段时间后。
但是,如果我将此设置为RequiretDeviceIdle 到,则为true 。我假设现在它仅在设备处于空闲模式时才起作用。
我希望过程完成,即使设备处于空闲状态还是不处于空闲状态。我现在应该怎么办?
最佳答案
如果您浏览WorkManager Docs,将会发现:
如果传递true
,则意味着当设备位于idle state
中时,将仅在上执行来执行您的工作。
正如您提到的那样,您希望您的任务始终执行。因此,您应该在false
中传递setRequiresDeviceIdle()
。
注意:您的任务不一定要在2小时后准确执行。根据DOCS,您的任务可能会推迟到下一个maintenance window
为止。您的任务肯定会执行,但是持续时间不会完全是2小时。可能还不止于此。
如果您不想始终在正确的时间执行任务,则可以使用Alarm Manager和setExactAndAllowWhileIdle()
。 但是不鼓励这种做法,因为这样做不利于电池性能。
关于android - WorkManager setRequiresDeviceIdle令人困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54745805/