如何解决Constraints.BuildersetRequiresDeviceIdleboolean requireDeviceIdle为什么需要API 23?
使用Constraints
类在WorkRequest
上设置约束,这向我发出警告,我必须至少具有API 23才能使用Constraints.Builder().setRequiresDeviceIdle(boolean requiresDeviceIdle)
function。
这是为什么?我以为整个WorkManager
API都应该一直工作到API 14。
有哪些替代方案?
解决方法
如果您查看实际的 setRequiresDeviceIdle 源代码(Ctrl +单击它),您将看到它标记有最低API 23要求。
当将任何androidx库反向移植到较低的API级别时,有时可能无法实现某些功能,因为某些功能没有等效功能。
您将需要根据您的要求实施定制的解决方法。 一种解决方案是让您的任务开始,并使用辅助方法来确定是否需要重新计划任务,或执行任务的目标逻辑。
例如,如果您需要仅在设备不处于空闲状态(或相反)时才运行任务,则可以创建一个可以使用PowerManager.isInteractive的帮助程序方法(取决于API 20)或KeyguardManager.isKeyguardLocked(下降到16),然后执行 可能的最佳 “空闲状态”决策。但是对于23以下的API来说,它不是100%的防弹解决方案。
请注意,也请考虑要求此类功能的生命周期实用程序,因为在此答案级别时,API级别低于23的设备仅占市场份额的15%,而这一比例每年将迅速下降,因为23岁以下的事物已经非常古老且有限。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。