js-apis-resourceschedule-workScheduler.md 18.5 KB
Newer Older
Z
bugfix  
zhutianyi 已提交
1 2 3 4 5 6 7 8 9 10
# 延迟任务调度

本模块提供延迟任务注册、取消、查询的能力。

开发者在开发应用时,通过调用延迟任务注册接口,注册对实时性要求不高的延迟任务,该任务默认由系统安排,在系统空闲时根据性能、功耗、热等情况进行调度执行。

>  **说明:**
>
>  - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
>  - 本模块接口仅可在Stage模型下使用。
修改  
朱天怡 已提交
11
>  - 延迟任务调度约束见[延迟任务调度约束](../../task-management/background-task-overview.md#延迟任务调度约束)。
Z
bugfix  
zhutianyi 已提交
12 13 14 15 16 17 18 19


## 导入模块

```js
import workScheduler from '@ohos.resourceschedule.workScheduler';
```

bugfix  
朱天怡 已提交
20
## workScheduler.startWork
Z
bugfix  
zhutianyi 已提交
21 22 23 24 25 26 27 28 29 30 31 32
startWork(work: WorkInfo): void

通知WorkSchedulerService将工作添加到执行队列。

**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

**参数**

| 参数名  | 类型                    | 必填   | 说明             |
| ---- | --------------------- | ---- | -------------- |
| work | [WorkInfo](#workinfo) | 是    | 指示要添加到执行队列的工作。 |

bugfix  
朱天怡 已提交
33 34
**错误码**

bugfix  
朱天怡 已提交
35
以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。
修改  
朱天怡 已提交
36 37 38 39 40 41 42 43

| 错误码ID  | 错误码信息             |
| ---- | --------------------- |
| 9700001 | Memory operation failed. |
| 9700002 | Parcel operation failed. |
| 9700003 | System service operation failed. |
| 9700004 | Check workInfo failed. |
| 9700005 | StartWork failed. |
bugfix  
朱天怡 已提交
44

修改  
朱天怡 已提交
45

Z
bugfix  
zhutianyi 已提交
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
**示例**

```js
  let workInfo = {
      workId: 1,
      batteryStatus:workScheduler.BatteryStatus.BATTERY_STATUS_LOW,
      isRepeat: false,
      isPersisted: true,
      bundleName: "com.example.myapplication",
      abilityName: "MyExtension",
      parameters: {
          mykey0: 1,
          mykey1: "string value",
          mykey2: true,
          mykey3: 1.5
      }
  }
  try{
    workScheduler.startWork(workInfo);
    console.info('workschedulerLog startWork success');
  } catch (error) {
    console.error(`workschedulerLog startwork failed. code is ${error.code} message is ${error.message}`);
  }
```

bugfix  
朱天怡 已提交
71
## workScheduler.stopWork
Z
bugfix  
zhutianyi 已提交
72 73 74 75 76 77 78 79 80 81 82 83 84
stopWork(work: WorkInfo, needCancel?: boolean): void

通知WorkSchedulerService停止指定工作。

**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

**参数**

| 参数名        | 类型                    | 必填   | 说明         |
| ---------- | --------------------- | ---- | ---------- |
| work       | [WorkInfo](#workinfo) | 是    | 指示要停止的工作。  |
| needCancel | boolean               | 是    | 是否需要取消的工作。 |

bugfix  
朱天怡 已提交
85 86
**错误码**

bugfix  
朱天怡 已提交
87
以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。
修改  
朱天怡 已提交
88 89 90 91 92 93 94

| 错误码ID  | 错误码信息             |
| ---- | --------------------- |
| 9700001 | Memory operation failed. |
| 9700002 | Parcel operation failed. |
| 9700003 | System service operation failed. |
| 9700004 | Check workInfo failed. |
bugfix  
朱天怡 已提交
95

Z
bugfix  
zhutianyi 已提交
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
**示例**

```js
  let workInfo = {
      workId: 1,
      batteryStatus:workScheduler.BatteryStatus.BATTERY_STATUS_LOW,
      isRepeat: false,
      isPersisted: true,
      bundleName: "com.example.myapplication",
      abilityName: "MyExtension",
      parameters: {
          mykey0: 1,
          mykey1: "string value",
          mykey2: true,
          mykey3: 1.5
      }
     }
  try{
    workScheduler.stopWork(workInfo, false);
    console.info('workschedulerLog stopWork success');
  } catch (error) {
    console.error(`workschedulerLog stopWork failed. code is ${error.code} message is ${error.message}`);
  }
```

bugfix  
朱天怡 已提交
121
## workScheduler.getWorkStatus:callback
Z
bugfix  
zhutianyi 已提交
122 123 124 125 126 127 128 129 130 131 132 133 134
getWorkStatus(workId: number, callback : AsyncCallback\<WorkInfo>): void

获取工作的最新状态,使用Callback形式返回。

**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

**参数**

| 参数名      | 类型                                    | 必填   | 说明                                       |
| -------- | ------------------------------------- | ---- | ---------------------------------------- |
| workId   | number                                | 是    | work的id。                                 |
| callback | AsyncCallback\<[WorkInfo](#workinfo)> | 是    | 指定的callback回调方法。如果指定的工作Id有效,则返回从WorkSchedulerService获取的有效工作状态;否则返回null。 |

bugfix  
朱天怡 已提交
135 136
**错误码**

bugfix  
朱天怡 已提交
137
以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。
修改  
朱天怡 已提交
138 139 140 141 142 143 144

| 错误码ID  | 错误码信息             |
| ---- | --------------------- |
| 9700001 | Memory operation failed. |
| 9700002 | Parcel operation failed. |
| 9700003 | System service operation failed. |
| 9700004 | Check workInfo failed. |
bugfix  
朱天怡 已提交
145

Z
bugfix  
zhutianyi 已提交
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
**示例**

```js
  try{
    workScheduler.getWorkStatus(50, (error, res) => {
      if (error) {
        console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`);
      } else {
        for (let item in res) {
          console.info(`workschedulerLog getWorkStatus success, ${item} is: ${res[item]}`);
        }
      }
    });
  } catch (error) {
    console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`);
  }
```

bugfix  
朱天怡 已提交
164
## workScheduler.getWorkStatus:promise
Z
bugfix  
zhutianyi 已提交
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
getWorkStatus(workId: number): Promise\<WorkInfo>

获取工作的最新状态,使用Promise形式返回。

**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

**参数**

| 参数名    | 类型     | 必填   | 说明       |
| ------ | ------ | ---- | -------- |
| workId | number | 是    | work的id。 |

**返回值**

| 类型                              | 说明                                       |
| ------------------------------- | ---------------------------------------- |
| Promise\<[WorkInfo](#workinfo)> | 指定的Promise回调方法。如果指定的工作ID有效,则返回从WorkSchedulerService获取的有效工作状态;否则返回null。 |

bugfix  
朱天怡 已提交
183 184
**错误码**

bugfix  
朱天怡 已提交
185
以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。
修改  
朱天怡 已提交
186 187 188 189 190 191 192

| 错误码ID  | 错误码信息             |
| ---- | --------------------- |
| 9700001 | Memory operation failed. |
| 9700002 | Parcel operation failed. |
| 9700003 | System service operation failed. |
| 9700004 | Check workInfo failed. |
bugfix  
朱天怡 已提交
193

Z
bugfix  
zhutianyi 已提交
194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
**示例**

```js
  try{
    workScheduler.getWorkStatus(50).then((res) => {
      for (let item in res) {
        console.info(`workschedulerLog getWorkStatus success, ${item} is: ${res[item]}`);
      }
    }).catch((error) => {
      console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`);
    })
  } catch (error) {
    console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`);
  }
```

bugfix  
朱天怡 已提交
210
## workScheduler.obtainAllWorks:callback
Z
bugfix  
zhutianyi 已提交
211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228
obtainAllWorks(callback : AsyncCallback\<void>): Array\<WorkInfo>

获取与当前应用程序关联的所有工作,使用Callback形式返回。

**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

**参数**

| 参数名      | 类型                   | 必填   | 说明                              |
| -------- | -------------------- | ---- | ------------------------------- |
| callback | AsyncCallback\<void> | 是    | 指定的callback回调方法。返回与应用程序关联的所有工作。 |

**返回值**

| 类型                            | 说明              |
| ----------------------------- | --------------- |
| Array\<[WorkInfo](#workinfo)> | 返回与应用程序关联的所有工作。 |

bugfix  
朱天怡 已提交
229 230
**错误码**

bugfix  
朱天怡 已提交
231
以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。
修改  
朱天怡 已提交
232 233 234 235 236 237

| 错误码ID  | 错误码信息             |
| ---- | --------------------- |
| 9700001 | Memory operation failed. |
| 9700002 | Parcel operation failed. |
| 9700003 | System service operation failed. |
bugfix  
朱天怡 已提交
238

Z
bugfix  
zhutianyi 已提交
239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254
**示例**

```js
  try{
    workScheduler.obtainAllWorks((error, res) =>{
      if (error) {
        console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`);
      } else {
        console.info(`workschedulerLog obtainAllWorks success, data is: ${JSON.stringify(res)}`);
      }
    });
  } catch (error) {
    console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`);
  }
```

bugfix  
朱天怡 已提交
255
## workScheduler.obtainAllWorks:promise
Z
bugfix  
zhutianyi 已提交
256 257 258 259 260 261 262 263 264 265 266 267
obtainAllWorks(): Promise<Array\<WorkInfo>>

获取与当前应用程序关联的所有工作,使用Promise形式返回。

**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

**返回值**

| 类型                                     | 说明                             |
| -------------------------------------- | ------------------------------ |
| Promise<Array\<[WorkInfo](#workinfo)>> | 指定的Promise回调方法。返回与应用程序关联的所有工作。 |

bugfix  
朱天怡 已提交
268 269
**错误码**

bugfix  
朱天怡 已提交
270
以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。
修改  
朱天怡 已提交
271 272 273 274 275 276

| 错误码ID  | 错误码信息             |
| ---- | --------------------- |
| 9700001 | Memory operation failed. |
| 9700002 | Parcel operation failed. |
| 9700003 | System service operation failed. |
bugfix  
朱天怡 已提交
277

Z
bugfix  
zhutianyi 已提交
278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298
**示例**

```js
  try{
    workScheduler.obtainAllWorks().then((res) => {
      console.info(`workschedulerLog obtainAllWorks success, data is: ${JSON.stringify(res)}`);
    }).catch((error) => {
      console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`);
    })
  } catch (error) {
    console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`);
  }
```

## workScheduler.stopAndClearWorks
stopAndClearWorks(): void

停止和取消与当前应用程序关联的所有工作。

**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

bugfix  
朱天怡 已提交
299 300
**错误码**

bugfix  
朱天怡 已提交
301
以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。
修改  
朱天怡 已提交
302 303 304 305 306 307

| 错误码ID  | 错误码信息             |
| ---- | --------------------- |
| 9700001 | Memory operation failed. |
| 9700002 | Parcel operation failed. |
| 9700003 | System service operation failed. |
bugfix  
朱天怡 已提交
308

Z
bugfix  
zhutianyi 已提交
309 310 311 312 313 314 315 316 317 318 319
**示例**

```js
  try{
    workScheduler.stopAndClearWorks();
    console.info(`workschedulerLog stopAndClearWorks success`);
  } catch (error) {
    console.error(`workschedulerLog stopAndClearWorks failed. code is ${error.code} message is ${error.message}`);
  }
```

bugfix  
朱天怡 已提交
320
## workScheduler.isLastWorkTimeOut:callback
Z
bugfix  
zhutianyi 已提交
321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339
isLastWorkTimeOut(workId: number, callback : AsyncCallback\<void>): boolean

检查指定工作的最后一次执行是否为超时操作,使用Callback形式返回。

**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

**参数**

| 参数名      | 类型                   | 必填   | 说明                                       |
| -------- | -------------------- | ---- | ---------------------------------------- |
| workId   | number               | 是    | work的id。                                 |
| callback | AsyncCallback\<void> | 是    | 指定的callback回调方法。如果指定工作的最后一次执行是超时操作,则返回true;否则返回false。 |

**返回值**

| 类型      | 说明                                       |
| ------- | ---------------------------------------- |
| boolean | 指定的callback回调方法。如果指定工作的最后一次执行是超时操作,则返回true;否则返回false。 |

bugfix  
朱天怡 已提交
340 341
**错误码**

bugfix  
朱天怡 已提交
342
以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。
修改  
朱天怡 已提交
343 344 345 346 347 348

| 错误码ID  | 错误码信息             |
| ---- | --------------------- |
| 9700001 | Memory operation failed. |
| 9700002 | Parcel operation failed. |
| 9700003 | System service operation failed. |
bugfix  
朱天怡 已提交
349

Z
bugfix  
zhutianyi 已提交
350 351 352 353 354 355
**示例**

```js
  try{
    workScheduler.isLastWorkTimeOut(500, (error, res) =>{
      if (error) {
bugfix  
朱天怡 已提交
356
        console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`);
Z
bugfix  
zhutianyi 已提交
357 358 359 360 361 362 363 364 365
      } else {
        console.info(`workschedulerLog isLastWorkTimeOut success, data is: ${res}`);
      }
    });
  } catch (error) {
    console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`);
  }
```

bugfix  
朱天怡 已提交
366
## workScheduler.isLastWorkTimeOut:promise
Z
bugfix  
zhutianyi 已提交
367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384
isLastWorkTimeOut(workId: number): Promise\<boolean>

检查指定工作的最后一次执行是否为超时操作,使用Promise形式返回。

**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

**参数**

| 参数名    | 类型     | 必填   | 说明       |
| ------ | ------ | ---- | -------- |
| workId | number | 是    | work的id。 |

**返回值**

| 类型                | 说明                                       |
| ----------------- | ---------------------------------------- |
| Promise\<boolean> | 指定的Promise回调方法。如果指定工作的最后一次执行是超时操作,则返回true;否则返回false。 |

bugfix  
朱天怡 已提交
385 386
**错误码**

bugfix  
朱天怡 已提交
387
以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。
修改  
朱天怡 已提交
388 389 390 391 392 393

| 错误码ID  | 错误码信息             |
| ---- | --------------------- |
| 9700001 | Memory operation failed. |
| 9700002 | Parcel operation failed. |
| 9700003 | System service operation failed. |
bugfix  
朱天怡 已提交
394

Z
bugfix  
zhutianyi 已提交
395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411
**示例**

```js
  try{
    workScheduler.isLastWorkTimeOut(500)
      .then(res => {
        console.info(`workschedulerLog isLastWorkTimeOut success, data is: ${res}`);
      })
      .catch(error =>  {
        console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`);
      });
  } catch (error) {
    console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`);
  }
```

## WorkInfo
bugfix  
朱天怡 已提交
412
提供工作的具体信息。WorkInfo设置参数约束见[延迟任务调度概述](../../task-management/background-task-overview.md#延迟任务调度约束)
Z
bugfix  
zhutianyi 已提交
413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439

**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

| 参数名             | 类型                                | 必填   | 说明               |
| --------------- | --------------------------------- | ---- | ---------------- |
| workId          | number                            | 是    | 当前工作的ID          |
| bundleName      | string                            | 是    | 延迟任务包名           |
| abilityName     | string                            | 是    | 延迟任务回调通知的组件名(必填) |
| networkType     | [NetworkType](#networktype)       | 否    | 网络类型             |
| isCharging      | boolean                           | 否    | 是否充电             |
| chargerType     | [ChargingType](#chargingtype)     | 否    | 充电类型             |
| batteryLevel    | number                            | 否    | 电量               |
| batteryStatus   | [BatteryStatus](#batterystatus)   | 否    | 电池状态             |
| storageRequest  | [StorageRequest](#storagerequest) | 否    | 存储状态             |
| isRepeat        | boolean                           | 否    | 是否循环任务           |
| repeatCycleTime | number                            | 否    | 循环间隔             |
| repeatCount     | number                            | 否    | 循环次数             |
| isPersisted     | boolean                           | 否    | 是否持久化保存工作        |
| isDeepIdle      | boolean                           | 否    | 是否要求设备进入空闲状态     |
| idleWaitTime    | number                            | 否    | 空闲等待时间           |
| parameters      | {[key: string]: any}              | 否    | 携带参数信息           |

## NetworkType
触发工作的网络类型。

**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

BUGFIX  
朱天怡 已提交
440 441 442 443 444 445 446 447
| 名称                     | 说明                      |
| ---------------------- | ----------------------- |
| NETWORK_TYPE_ANY       | 表示这个触发条件是任何类型的网络连接。     |
| NETWORK_TYPE_MOBILE    | 表示这个触发条件是Mobile网络连接。    |
| NETWORK_TYPE_WIFI      | 表示这个触发条件是Wifi类型的网络连接。   |
| NETWORK_TYPE_BLUETOOTH | 表示这个触发条件是Bluetooth网络连接。 |
| NETWORK_TYPE_WIFI_P2P  | 表示这个触发条件是Wifi P2P网络连接。  |
| NETWORK_TYPE_ETHERNET  | 表示这个触发条件是有线网络连接。        |
Z
bugfix  
zhutianyi 已提交
448 449 450 451 452 453

## ChargingType
触发工作的充电类型。

**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

BUGFIX  
朱天怡 已提交
454 455 456 457 458 459
| 名称                        | 说明                   |
| ------------------------- | -------------------- |
| CHARGING_PLUGGED_ANY      | 表示这个触发条件是任何类型的充电器连接。 |
| CHARGING_PLUGGED_AC       | 表示这个触发条件是直流充电器连接。    |
| CHARGING_PLUGGED_USB      | 表示这个触发条件是USB充连接。     |
| CHARGING_PLUGGED_WIRELESS | 表示这个触发条件是无线充电器连接。    |
Z
bugfix  
zhutianyi 已提交
460 461 462 463 464 465

## BatteryStatus
触发工作的电池状态。

**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

BUGFIX  
朱天怡 已提交
466 467 468 469 470
| 名称                         | 说明                         |
| -------------------------- | -------------------------- |
| BATTERY_STATUS_LOW         | 表示这个触发条件是低电告警。             |
| BATTERY_STATUS_OKAY        | 表示这个触发条件是从低电恢复到正常电量。       |
| BATTERY_STATUS_LOW_OR_OKAY | 表示这个触发条件是从低电恢复到正常电量或者低电告警。 |
Z
bugfix  
zhutianyi 已提交
471 472 473 474 475 476

## StorageRequest
触发工作的存储状态。

**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

BUGFIX  
朱天怡 已提交
477 478 479 480 481
| 名称                        | 说明                             |
| ------------------------- | ------------------------------ |
| STORAGE_LEVEL_LOW         | 表示这个触发条件是存储空间不足。               |
| STORAGE_LEVEL_OKAY        | 表示这个触发条件是从存储空间不足恢复到正常。         |
| STORAGE_LEVEL_LOW_OR_OKAY | 表示这个触发条件是从存储空间不足恢复到正常或者存储空间不足。 |