Jetpack系列之WorkManager(五)

504 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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()            

工作约束

  1. setRequiresCharging(true) - 设置工作请求运行时设备在充电状态。默认值为false。

  2. setRequiresDeviceIdle(true) - 设置工作请求运行时设备是否应该处于空闲状态,如息屏、CPU资源开销不大。默认值为false。

  3. setRequiredNetworkType(NetworkType.METERED) - 设置工作请求运行时设备是否应该处于指定网络状态。默认值为NetworkType.NOT_REQUIRED。

    类型职能
    NetworkType.NOT_REQUIRED对网络没有要求
    NetworkType.CONNECTED网络连接的时候执行
    NetworkType.UNMETERED不计费的网络比如WIFI下执行
    NetworkType.NOT_ROAMING非漫游网络状态
    NetworkType.METERED计费网络比如3G,4G下执行。
  4. setRequiresBatteryNotLow(true) - 设置工作请求运行时设备是否应该处于低电量状态,电量大于15%。默认值为false。

  5. setRequiresStorageNotLow(true) - 设置工作请求运行时设备是否应该处于存储空间充足状态,存储空间大于15%。默认值为false。

  6. setTriggerContentUpdateDelay(Duration.ZERO) - workmanager利用contentObserver监控传递进来的这个uri对应的内容是否发生变化,当且仅当它发生变化了,设置从content变化到被执行中间的延迟时间,如果在这期间。content发生了变化,延迟时间会被重新计算.

  7. setTriggerContentMaxDelay(Duration.ZERO) - 设置从content变化到被执行中间的最大延迟时间。