持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情
前言
上一篇我们了解了关于WorkRequest基本的信息,这一篇我们着重了解一下Constraints。
Constraints
概况
在运行WorkRequest之前需要满足的需求规范。默认情况下,WorkRequests没有任何需求,可以立即运行。通过增加约束,可以确保工作只在某些情况下运行。如果在工作运行时不再满足某个约束,WorkManager 将停止工作器。系统将在满足所有约束后重试工作。例如,当有WIFI的时候才进行日志上传。
基本使用
val constraints: Constraints = Constraints.Builder()
.setRequiresCharging(true)
.setRequiredNetworkType(NetworkType.METERED)
.setRequiresBatteryNotLow(true)
.build()
val requestWorker = OneTimeWorkRequestBuilder<MyWork>()
.setConstraints(constraints)
.build()
工作约束
-
setRequiresCharging(true) - 设置工作请求运行时设备在充电状态。默认值为false。
-
setRequiresDeviceIdle(true) - 设置工作请求运行时设备是否应该处于空闲状态,如息屏、CPU资源开销不大。默认值为false。
-
setRequiredNetworkType(NetworkType.METERED) - 设置工作请求运行时设备是否应该处于指定网络状态。默认值为NetworkType.NOT_REQUIRED。
类型 职能 NetworkType.NOT_REQUIRED 对网络没有要求 NetworkType.CONNECTED 网络连接的时候执行 NetworkType.UNMETERED 不计费的网络比如WIFI下执行 NetworkType.NOT_ROAMING 非漫游网络状态 NetworkType.METERED 计费网络比如3G,4G下执行。 -
setRequiresBatteryNotLow(true) - 设置工作请求运行时设备是否应该处于低电量状态,电量大于15%。默认值为false。
-
setRequiresStorageNotLow(true) - 设置工作请求运行时设备是否应该处于存储空间充足状态,存储空间大于15%。默认值为false。
-
setTriggerContentUpdateDelay(Duration.ZERO) -
workmanager利用contentObserver监控传递进来的这个uri对应的内容是否发生变化,当且仅当它发生变化了,设置从content变化到被执行中间的延迟时间,如果在这期间。content发生了变化,延迟时间会被重新计算. -
setTriggerContentMaxDelay(Duration.ZERO) - 设置从
content变化到被执行中间的最大延迟时间。