1# @ohos.resourceschedule.workScheduler (延迟任务调度) 2 3本模块提供延迟任务注册、取消、查询的能力。 4 5开发者在开发应用时,通过调用延迟任务注册接口,注册对实时性要求不高的延迟任务,该任务默认由系统安排,在系统空闲时根据性能、功耗、热等情况进行调度执行。 6 7> **说明:** 8> 9> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 10> - 本模块接口仅可在Stage模型下使用。 11> - 延迟任务调度约束见[延迟任务调度约束](../../task-management/background-task-overview.md#延迟任务调度约束)。 12 13 14## 导入模块 15 16```js 17import workScheduler from '@ohos.resourceschedule.workScheduler'; 18``` 19 20## workScheduler.startWork 21startWork(work: WorkInfo): void 22 23通知WorkSchedulerService将工作添加到执行队列。 24 25**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler 26 27**参数**: 28 29| 参数名 | 类型 | 必填 | 说明 | 30| ---- | --------------------- | ---- | -------------- | 31| work | [WorkInfo](#workinfo) | 是 | 指示要添加到执行队列的工作。 | 32 33**错误码**: 34 35以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。 36 37| 错误码ID | 错误信息 | 38| ---- | --------------------- | 39| 9700001 | Memory operation failed. | 40| 9700002 | Parcel operation failed. | 41| 9700003 | System service operation failed. | 42| 9700004 | Check workInfo failed. | 43| 9700005 | StartWork failed. | 44 45 46**示例**: 47 48```js 49 let workInfo = { 50 workId: 1, 51 batteryStatus:workScheduler.BatteryStatus.BATTERY_STATUS_LOW, 52 isRepeat: false, 53 isPersisted: true, 54 bundleName: "com.example.myapplication", 55 abilityName: "MyExtension", 56 parameters: { 57 mykey0: 1, 58 mykey1: "string value", 59 mykey2: true, 60 mykey3: 1.5 61 } 62 } 63 try{ 64 workScheduler.startWork(workInfo); 65 console.info('workschedulerLog startWork success'); 66 } catch (error) { 67 console.error(`workschedulerLog startwork failed. code is ${error.code} message is ${error.message}`); 68 } 69``` 70 71## workScheduler.stopWork 72stopWork(work: WorkInfo, needCancel?: boolean): void 73 74通知WorkSchedulerService停止指定工作。 75 76**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler 77 78**参数**: 79 80| 参数名 | 类型 | 必填 | 说明 | 81| ---------- | --------------------- | ---- | ---------- | 82| work | [WorkInfo](#workinfo) | 是 | 指示要停止的工作。 | 83| needCancel | boolean | 否 | 是否需要取消的工作。 | 84 85**错误码**: 86 87以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。 88 89| 错误码ID | 错误信息 | 90| ---- | --------------------- | 91| 9700001 | Memory operation failed. | 92| 9700002 | Parcel operation failed. | 93| 9700003 | System service operation failed. | 94| 9700004 | Check workInfo failed. | 95 96**示例**: 97 98```js 99 let workInfo = { 100 workId: 1, 101 batteryStatus:workScheduler.BatteryStatus.BATTERY_STATUS_LOW, 102 isRepeat: false, 103 isPersisted: true, 104 bundleName: "com.example.myapplication", 105 abilityName: "MyExtension", 106 parameters: { 107 mykey0: 1, 108 mykey1: "string value", 109 mykey2: true, 110 mykey3: 1.5 111 } 112 } 113 try{ 114 workScheduler.stopWork(workInfo, false); 115 console.info('workschedulerLog stopWork success'); 116 } catch (error) { 117 console.error(`workschedulerLog stopWork failed. code is ${error.code} message is ${error.message}`); 118 } 119``` 120 121## workScheduler.getWorkStatus 122getWorkStatus(workId: number, callback : AsyncCallback\<WorkInfo>): void 123 124获取工作的最新状态,使用Callback形式返回。 125 126**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler 127 128**参数**: 129 130| 参数名 | 类型 | 必填 | 说明 | 131| -------- | ------------------------------------- | ---- | ---------------------------------------- | 132| workId | number | 是 | work的id。 | 133| callback | AsyncCallback\<[WorkInfo](#workinfo)> | 是 | 指定的callback回调方法。如果指定的工作Id有效,则返回从WorkSchedulerService获取的有效工作状态;否则抛出异常。 | 134 135**错误码**: 136 137以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。 138 139| 错误码ID | 错误信息 | 140| ---- | --------------------- | 141| 9700001 | Memory operation failed. | 142| 9700002 | Parcel operation failed. | 143| 9700003 | System service operation failed. | 144| 9700004 | Check workInfo failed. | 145 146**示例**: 147 148```js 149 try{ 150 workScheduler.getWorkStatus(50, (error, res) => { 151 if (error) { 152 console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`); 153 } else { 154 for (let item in res) { 155 console.info(`workschedulerLog getWorkStatus success, ${item} is: ${res[item]}`); 156 } 157 } 158 }); 159 } catch (error) { 160 console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`); 161 } 162``` 163 164## workScheduler.getWorkStatus 165getWorkStatus(workId: number): Promise\<WorkInfo> 166 167获取工作的最新状态,使用Promise形式返回。 168 169**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler 170 171**参数**: 172 173| 参数名 | 类型 | 必填 | 说明 | 174| ------ | ------ | ---- | -------- | 175| workId | number | 是 | work的id。 | 176 177**返回值**: 178 179| 类型 | 说明 | 180| ------------------------------- | ---------------------------------------- | 181| Promise\<[WorkInfo](#workinfo)> | 指定的Promise回调方法。如果指定的工作ID有效,则返回从WorkSchedulerService获取的有效工作状态;否则抛出异常。 | 182 183**错误码**: 184 185以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。 186 187| 错误码ID | 错误信息 | 188| ---- | --------------------- | 189| 9700001 | Memory operation failed. | 190| 9700002 | Parcel operation failed. | 191| 9700003 | System service operation failed. | 192| 9700004 | Check workInfo failed. | 193 194**示例**: 195 196```js 197 try{ 198 workScheduler.getWorkStatus(50).then((res) => { 199 for (let item in res) { 200 console.info(`workschedulerLog getWorkStatus success, ${item} is: ${res[item]}`); 201 } 202 }).catch((error) => { 203 console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`); 204 }) 205 } catch (error) { 206 console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`); 207 } 208``` 209 210## workScheduler.obtainAllWorks 211obtainAllWorks(callback : AsyncCallback\<void>): Array\<WorkInfo> 212 213获取与当前应用程序关联的所有工作,使用Callback形式返回。 214 215**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler 216 217**参数**: 218 219| 参数名 | 类型 | 必填 | 说明 | 220| -------- | -------------------- | ---- | ------------------------------- | 221| callback | AsyncCallback\<void> | 是 | 指定的callback回调方法。返回与应用程序关联的所有工作。 | 222 223**返回值**: 224 225| 类型 | 说明 | 226| ----------------------------- | --------------- | 227| Array\<[WorkInfo](#workinfo)> | 返回与应用程序关联的所有工作。 | 228 229**错误码**: 230 231以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。 232 233| 错误码ID | 错误信息 | 234| ---- | --------------------- | 235| 9700001 | Memory operation failed. | 236| 9700002 | Parcel operation failed. | 237| 9700003 | System service operation failed. | 238 239**示例**: 240 241```js 242 try{ 243 workScheduler.obtainAllWorks((error, res) =>{ 244 if (error) { 245 console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`); 246 } else { 247 console.info(`workschedulerLog obtainAllWorks success, data is: ${JSON.stringify(res)}`); 248 } 249 }); 250 } catch (error) { 251 console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`); 252 } 253``` 254 255## workScheduler.obtainAllWorks 256obtainAllWorks(): Promise<Array\<WorkInfo>> 257 258获取与当前应用程序关联的所有工作,使用Promise形式返回。 259 260**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler 261 262**返回值**: 263 264| 类型 | 说明 | 265| -------------------------------------- | ------------------------------ | 266| Promise<Array\<[WorkInfo](#workinfo)>> | 指定的Promise回调方法。返回与应用程序关联的所有工作。 | 267 268**错误码**: 269 270以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。 271 272| 错误码ID | 错误信息 | 273| ---- | --------------------- | 274| 9700001 | Memory operation failed. | 275| 9700002 | Parcel operation failed. | 276| 9700003 | System service operation failed. | 277 278**示例**: 279 280```js 281 try{ 282 workScheduler.obtainAllWorks().then((res) => { 283 console.info(`workschedulerLog obtainAllWorks success, data is: ${JSON.stringify(res)}`); 284 }).catch((error) => { 285 console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`); 286 }) 287 } catch (error) { 288 console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`); 289 } 290``` 291 292## workScheduler.stopAndClearWorks 293stopAndClearWorks(): void 294 295停止和取消与当前应用程序关联的所有工作。 296 297**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler 298 299**错误码**: 300 301以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。 302 303| 错误码ID | 错误信息 | 304| ---- | --------------------- | 305| 9700001 | Memory operation failed. | 306| 9700002 | Parcel operation failed. | 307| 9700003 | System service operation failed. | 308 309**示例**: 310 311```js 312 try{ 313 workScheduler.stopAndClearWorks(); 314 console.info(`workschedulerLog stopAndClearWorks success`); 315 } catch (error) { 316 console.error(`workschedulerLog stopAndClearWorks failed. code is ${error.code} message is ${error.message}`); 317 } 318``` 319 320## workScheduler.isLastWorkTimeOut 321isLastWorkTimeOut(workId: number, callback : AsyncCallback\<void>): boolean 322 323检查指定工作的最后一次执行是否为超时操作,使用Callback形式返回。 324 325**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler 326 327**参数**: 328 329| 参数名 | 类型 | 必填 | 说明 | 330| -------- | -------------------- | ---- | ---------------------------------------- | 331| workId | number | 是 | work的id。 | 332| callback | AsyncCallback\<void> | 是 | 指定的callback回调方法。如果指定工作的最后一次执行是超时操作,则返回true;否则返回false。 | 333 334**返回值**: 335 336| 类型 | 说明 | 337| ------- | ---------------------------------------- | 338| boolean | 指定的callback回调方法。如果指定工作的最后一次执行是超时操作,则返回true;否则返回false。 | 339 340**错误码**: 341 342以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。 343 344| 错误码ID | 错误信息 | 345| ---- | --------------------- | 346| 9700001 | Memory operation failed. | 347| 9700002 | Parcel operation failed. | 348| 9700003 | System service operation failed. | 349| 9700004 | Check workInfo failed. | 350 351**示例**: 352 353```js 354 try{ 355 workScheduler.isLastWorkTimeOut(500, (error, res) =>{ 356 if (error) { 357 console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`); 358 } else { 359 console.info(`workschedulerLog isLastWorkTimeOut success, data is: ${res}`); 360 } 361 }); 362 } catch (error) { 363 console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`); 364 } 365``` 366 367## workScheduler.isLastWorkTimeOut 368isLastWorkTimeOut(workId: number): Promise\<boolean> 369 370检查指定工作的最后一次执行是否为超时操作,使用Promise形式返回。 371 372**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler 373 374**参数**: 375 376| 参数名 | 类型 | 必填 | 说明 | 377| ------ | ------ | ---- | -------- | 378| workId | number | 是 | work的id。 | 379 380**返回值**: 381 382| 类型 | 说明 | 383| ----------------- | ---------------------------------------- | 384| Promise\<boolean> | 指定的Promise回调方法。如果指定工作的最后一次执行是超时操作,则返回true;否则返回false。 | 385 386**错误码**: 387 388以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。 389 390| 错误码ID | 错误信息 | 391| ---- | --------------------- | 392| 9700001 | Memory operation failed. | 393| 9700002 | Parcel operation failed. | 394| 9700003 | System service operation failed. | 395| 9700004 | Check workInfo failed. | 396 397**示例**: 398 399```js 400 try{ 401 workScheduler.isLastWorkTimeOut(500) 402 .then(res => { 403 console.info(`workschedulerLog isLastWorkTimeOut success, data is: ${res}`); 404 }) 405 .catch(error => { 406 console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`); 407 }); 408 } catch (error) { 409 console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`); 410 } 411``` 412 413## WorkInfo 414提供工作的具体信息。WorkInfo设置参数约束见[延迟任务调度概述](../../task-management/background-task-overview.md#延迟任务调度约束) 415 416**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler 417 418| 名称 | 类型 | 必填 | 说明 | 419| --------------- | --------------------------------- | ---- | ---------------- | 420| workId | number | 是 | 当前工作的ID | 421| bundleName | string | 是 | 延迟任务包名 | 422| abilityName | string | 是 | 延迟任务回调通知的组件名(必填) | 423| networkType | [NetworkType](#networktype) | 否 | 网络类型 | 424| isCharging | boolean | 否 | 是否充电 | 425| chargerType | [ChargingType](#chargingtype) | 否 | 充电类型 | 426| batteryLevel | number | 否 | 电量 | 427| batteryStatus | [BatteryStatus](#batterystatus) | 否 | 电池状态 | 428| storageRequest | [StorageRequest](#storagerequest) | 否 | 存储状态 | 429| isRepeat | boolean | 否 | 是否循环任务 | 430| repeatCycleTime | number | 否 | 循环间隔 | 431| repeatCount | number | 否 | 循环次数 | 432| isPersisted | boolean | 否 | 是否持久化保存工作 | 433| isDeepIdle | boolean | 否 | 是否要求设备进入空闲状态 | 434| idleWaitTime | number | 否 | 空闲等待时间 | 435| parameters | {[key: string]: number | string | boolean} | 否 | 携带参数信息 | 436 437## NetworkType 438触发工作的网络类型。 439 440**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler 441 442| 名称 | 值 | 说明 | 443| ---------------------- | ---- | ----------------------- | 444| NETWORK_TYPE_ANY | 0 | 表示这个触发条件是任何类型的网络连接。 | 445| NETWORK_TYPE_MOBILE | 1 | 表示这个触发条件是Mobile网络连接。 | 446| NETWORK_TYPE_WIFI | 2 | 表示这个触发条件是Wifi类型的网络连接。 | 447| NETWORK_TYPE_BLUETOOTH | 3 | 表示这个触发条件是Bluetooth网络连接。 | 448| NETWORK_TYPE_WIFI_P2P | 4 | 表示这个触发条件是Wifi P2P网络连接。 | 449| NETWORK_TYPE_ETHERNET | 5 | 表示这个触发条件是有线网络连接。 | 450 451## ChargingType 452触发工作的充电类型。 453 454**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler 455 456| 名称 | 值 | 说明 | 457| ------------------------- | ---- | -------------------- | 458| CHARGING_PLUGGED_ANY | 0 | 表示这个触发条件是任何类型的充电器连接。 | 459| CHARGING_PLUGGED_AC | 1 | 表示这个触发条件是直流充电器连接。 | 460| CHARGING_PLUGGED_USB | 2 | 表示这个触发条件是USB充连接。 | 461| CHARGING_PLUGGED_WIRELESS | 3 | 表示这个触发条件是无线充电器连接。 | 462 463## BatteryStatus 464触发工作的电池状态。 465 466**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler 467 468| 名称 | 值 | 说明 | 469| -------------------------- | ---- | -------------------------- | 470| BATTERY_STATUS_LOW | 0 | 表示这个触发条件是低电告警。 | 471| BATTERY_STATUS_OKAY | 1 | 表示这个触发条件是从低电恢复到正常电量。 | 472| BATTERY_STATUS_LOW_OR_OKAY | 2 | 表示这个触发条件是从低电恢复到正常电量或者低电告警。 | 473 474## StorageRequest 475触发工作的存储状态。 476 477**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler 478 479| 名称 | 值 | 说明 | 480| ------------------------- | ---- | ------------------------------ | 481| STORAGE_LEVEL_LOW | 0 | 表示这个触发条件是存储空间不足。 | 482| STORAGE_LEVEL_OKAY | 1 | 表示这个触发条件是从存储空间不足恢复到正常。 | 483| STORAGE_LEVEL_LOW_OR_OKAY | 2 | 表示这个触发条件是从存储空间不足恢复到正常或者存储空间不足。 |