js-apis-workScheduler.md 14.3 KB
Newer Older
N
nobbo 已提交
1 2
# 延迟任务调度

N
nobbo 已提交
3 4
本模块提供延迟任务注册、取消、查询的能力。

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

H
HelloCrease 已提交
7
>  **说明:**
8 9 10
>
>  - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
>  - 本模块接口仅可在Stage模型下使用。
修改  
朱天怡 已提交
11
>  - 延迟任务调度约束见[延迟任务调度概述](../../task-management/work-scheduler-overview.md)。
N
nobbo 已提交
12 13 14 15


## 导入模块

H
HelloCrease 已提交
16
```js
N
nobbo 已提交
17 18 19 20
import workScheduler from '@ohos.workScheduler' 
```

## workScheduler.startWork
N
nobbo 已提交
21
startWork(work: WorkInfo): boolean
N
nobbo 已提交
22 23 24

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

N
nobbo 已提交
25
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
26

N
nobbo 已提交
27
**参数**
N
nobbo 已提交
28

H
HelloCrease 已提交
29 30 31
| 参数名  | 类型                    | 必填   | 说明             |
| ---- | --------------------- | ---- | -------------- |
| work | [WorkInfo](#workinfo) | 是    | 指示要添加到执行队列的工作。 |
N
nobbo 已提交
32

N
nobbo 已提交
33
**返回值**
N
nobbo 已提交
34

H
HelloCrease 已提交
35 36
| 类型      | 说明                               |
| ------- | -------------------------------- |
N
nobbo 已提交
37
| boolean | 如果工作成功添加到执行队列,则返回true,否则返回false。 |
N
nobbo 已提交
38

N
nobbo 已提交
39
**示例**
N
nobbo 已提交
40

H
HelloCrease 已提交
41
```js
N
nobbo 已提交
42 43 44 45 46 47
  let workInfo = {
      workId: 1,
      batteryStatus:workScheduler.BatteryStatus.BATTERY_STATUS_LOW,
      isRepeat: false,
      isPersisted: true,
      bundleName: "com.example.myapplication",
48 49
      abilityName: "MyExtension",
      parameters: {
朱天怡 已提交
50 51
          mykey0: 1,
          mykey1: "string value",
52
          mykey2: true,
朱天怡 已提交
53
          mykey3: 1.5
54
      }
N
nobbo 已提交
55 56 57 58
  }
  var res = workScheduler.startWork(workInfo);
  console.info("workschedulerLog res:" + res);
```
N
nobbo 已提交
59

N
nobbo 已提交
60 61
## workScheduler.stopWork
stopWork(work: WorkInfo, needCancel?: boolean): boolean
N
nobbo 已提交
62 63 64

通知WorkSchedulerService停止指定工作。

N
nobbo 已提交
65
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
66

N
nobbo 已提交
67
**参数**
N
nobbo 已提交
68

H
HelloCrease 已提交
69 70 71 72
| 参数名        | 类型                    | 必填   | 说明         |
| ---------- | --------------------- | ---- | ---------- |
| work       | [WorkInfo](#workinfo) | 是    | 指示要停止的工作。  |
| needCancel | boolean               | 是    | 是否需要取消的工作。 |
N
nobbo 已提交
73

N
nobbo 已提交
74
**返回值**
N
nobbo 已提交
75

H
HelloCrease 已提交
76 77
| 类型      | 说明                      |
| ------- | ----------------------- |
N
nobbo 已提交
78
| boolean | 如果成功,则返回true,否则返回false。 |
N
nobbo 已提交
79

N
nobbo 已提交
80
**示例**
N
nobbo 已提交
81

H
HelloCrease 已提交
82
```js
N
nobbo 已提交
83 84 85 86 87 88
  let workInfo = {
      workId: 1,
      batteryStatus:workScheduler.BatteryStatus.BATTERY_STATUS_LOW,
      isRepeat: false,
      isPersisted: true,
      bundleName: "com.example.myapplication",
89 90
      abilityName: "MyExtension",
      parameters: {
朱天怡 已提交
91 92
          mykey0: 1,
          mykey1: "string value",
93
          mykey2: true,
朱天怡 已提交
94
          mykey3: 1.5
95
      }
N
nobbo 已提交
96 97 98 99
     }
  var res = workScheduler.stopWork(workInfo, false);
  console.info("workschedulerLog res:" + res);
```
N
nobbo 已提交
100

N
nobbo 已提交
101 102
## workScheduler.getWorkStatus
getWorkStatus(workId: number, callback : AsyncCallback\<WorkInfo>): void
N
nobbo 已提交
103 104 105

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

N
nobbo 已提交
106
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
107

N
nobbo 已提交
108
**参数**
N
nobbo 已提交
109

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

N
nobbo 已提交
115
**示例**
N
nobbo 已提交
116

H
HelloCrease 已提交
117
```js
N
nobbo 已提交
118 119
  workScheduler.getWorkStatus(50, (err, res) => {
    if (err) {
陈明 已提交
120
      console.info('workschedulerLog getWorkStatus failed, because:' + err.code);
N
nobbo 已提交
121 122 123
    } else {
      for (let item in res) {
        console.info('workschedulerLog getWorkStatus success,' + item + ' is:' + res[item]);
N
nobbo 已提交
124
      }
N
nobbo 已提交
125 126 127
    }
  });
```
N
nobbo 已提交
128 129

## workScheduler.getWorkStatus
H
HelloCrease 已提交
130
getWorkStatus(workId: number): Promise\<WorkInfo>
N
nobbo 已提交
131 132 133

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

N
nobbo 已提交
134
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
135

N
nobbo 已提交
136
**参数**
N
nobbo 已提交
137

H
HelloCrease 已提交
138 139 140
| 参数名    | 类型     | 必填   | 说明       |
| ------ | ------ | ---- | -------- |
| workId | number | 是    | work的id。 |
N
nobbo 已提交
141

N
nobbo 已提交
142
**返回值**
N
nobbo 已提交
143

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

N
nobbo 已提交
148
**示例**
N
nobbo 已提交
149

H
HelloCrease 已提交
150
```js
N
nobbo 已提交
151 152 153 154 155
  workScheduler.getWorkStatus(50).then((res) => {
    for (let item in res) {
      console.info('workschedulerLog getWorkStatus success,' + item + ' is:' + res[item]);
    }
  }).catch((err) => {
陈明 已提交
156
    console.info('workschedulerLog getWorkStatus failed, because:' + err.code);
N
nobbo 已提交
157 158
  })
```
N
nobbo 已提交
159

N
nobbo 已提交
160 161
## workScheduler.obtainAllWorks
obtainAllWorks(callback : AsyncCallback\<void>): Array\<WorkInfo>
N
nobbo 已提交
162 163 164

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

N
nobbo 已提交
165
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
166

N
nobbo 已提交
167
**参数**
N
nobbo 已提交
168

H
HelloCrease 已提交
169 170 171
| 参数名      | 类型                   | 必填   | 说明                              |
| -------- | -------------------- | ---- | ------------------------------- |
| callback | AsyncCallback\<void> | 是    | 指定的callback回调方法。返回与应用程序关联的所有工作。 |
N
nobbo 已提交
172

N
nobbo 已提交
173
**返回值**
N
nobbo 已提交
174

H
HelloCrease 已提交
175 176
| 类型                            | 说明              |
| ----------------------------- | --------------- |
N
nobbo 已提交
177
| Array\<[WorkInfo](#workinfo)> | 返回与应用程序关联的所有工作。 |
N
nobbo 已提交
178

N
nobbo 已提交
179
**示例**
N
nobbo 已提交
180

H
HelloCrease 已提交
181
```js
N
nobbo 已提交
182 183
  workScheduler.obtainAllWorks((err, res) =>{
    if (err) {
陈明 已提交
184
      console.info('workschedulerLog obtainAllWorks failed, because:' + err.code);
N
nobbo 已提交
185 186 187 188 189
    } else {
      console.info('workschedulerLog obtainAllWorks success, data is:' + JSON.stringify(res));
    }
  });
```
N
nobbo 已提交
190 191

## workScheduler.obtainAllWorks
N
nobbo 已提交
192
obtainAllWorks(): Promise<Array\<WorkInfo>>
N
nobbo 已提交
193 194 195

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

N
nobbo 已提交
196
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
197

N
nobbo 已提交
198
**返回值**
N
nobbo 已提交
199

H
HelloCrease 已提交
200 201 202
| 类型                                     | 说明                             |
| -------------------------------------- | ------------------------------ |
| Promise<Array\<[WorkInfo](#workinfo)>> | 指定的Promise回调方法。返回与应用程序关联的所有工作。 |
N
nobbo 已提交
203

N
nobbo 已提交
204
**示例**
N
nobbo 已提交
205

H
HelloCrease 已提交
206
```js
N
nobbo 已提交
207 208 209
  workScheduler.obtainAllWorks().then((res) => {
    console.info('workschedulerLog obtainAllWorks success, data is:' + JSON.stringify(res));
  }).catch((err) => {
陈明 已提交
210
    console.info('workschedulerLog obtainAllWorks failed, because:' + err.code);
N
nobbo 已提交
211 212
  })
```
N
nobbo 已提交
213

N
nobbo 已提交
214
## workScheduler.stopAndClearWorks
N
nobbo 已提交
215 216 217 218
stopAndClearWorks(): boolean

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

N
nobbo 已提交
219
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
220

N
nobbo 已提交
221
**示例**
N
nobbo 已提交
222

H
HelloCrease 已提交
223
```js
N
nobbo 已提交
224 225 226
  let res = workScheduler.stopAndClearWorks();
  console.info("workschedulerLog res:" + res);
```
N
nobbo 已提交
227

N
nobbo 已提交
228
## workScheduler.isLastWorkTimeOut
N
nobbo 已提交
229 230 231 232
isLastWorkTimeOut(workId: number, callback : AsyncCallback\<void>): boolean

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

N
nobbo 已提交
233
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
234

N
nobbo 已提交
235
**参数**
N
nobbo 已提交
236

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

N
nobbo 已提交
242
**返回值**
N
nobbo 已提交
243

H
HelloCrease 已提交
244 245
| 类型      | 说明                                       |
| ------- | ---------------------------------------- |
N
nobbo 已提交
246
| boolean | 指定的callback回调方法。如果指定工作的最后一次执行是超时操作,则返回true;否则返回false。 |
N
nobbo 已提交
247

N
nobbo 已提交
248
**示例**
N
nobbo 已提交
249

H
HelloCrease 已提交
250
```js
N
nobbo 已提交
251 252
  workScheduler.isLastWorkTimeOut(500, (err, res) =>{
    if (err) {
陈明 已提交
253
      console.info('workschedulerLog isLastWorkTimeOut failed, because:' + err.code);
N
nobbo 已提交
254 255 256 257 258
    } else {
      console.info('workschedulerLog isLastWorkTimeOut success, data is:' + res);
    }
  });
```
N
nobbo 已提交
259

N
nobbo 已提交
260
## workScheduler.isLastWorkTimeOut
N
nobbo 已提交
261 262 263 264
isLastWorkTimeOut(workId: number): Promise\<boolean>

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

N
nobbo 已提交
265 266 267
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

**参数**
N
nobbo 已提交
268

H
HelloCrease 已提交
269 270 271
| 参数名    | 类型     | 必填   | 说明       |
| ------ | ------ | ---- | -------- |
| workId | number | 是    | work的id。 |
N
nobbo 已提交
272

N
nobbo 已提交
273
**返回值**
N
nobbo 已提交
274

H
HelloCrease 已提交
275 276 277
| 类型                | 说明                                       |
| ----------------- | ---------------------------------------- |
| Promise\<boolean> | 指定的Promise回调方法。如果指定工作的最后一次执行是超时操作,则返回true;否则返回false。 |
N
nobbo 已提交
278

N
nobbo 已提交
279
**示例**
N
nobbo 已提交
280

H
HelloCrease 已提交
281
```js
N
nobbo 已提交
282 283 284
  workScheduler.isLastWorkTimeOut(500)
    .then(res => {
      console.info('workschedulerLog isLastWorkTimeOut success, data is:' + res);
N
nobbo 已提交
285
    })
N
nobbo 已提交
286
    .catch(err =>  {
陈明 已提交
287
      console.info('workschedulerLog isLastWorkTimeOut failed, because:' + err.code);
N
nobbo 已提交
288 289
    });
```
N
nobbo 已提交
290

N
nobbo 已提交
291
## WorkInfo
Z
zhutianyi 已提交
292
提供工作的具体信息。WorkInfo设置参数约束见[延迟任务调度概述](../../task-management/work-scheduler-overview.md)
N
nobbo 已提交
293

H
HelloCrease 已提交
294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312
**系统能力**: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                            | 否    | 空闲等待时间           |
313
| parameters      | {[key: string]: any}              | 否    | 携带参数信息           |
N
nobbo 已提交
314

N
nobbo 已提交
315
## NetworkType
N
nobbo 已提交
316 317
触发工作的网络类型。

H
HelloCrease 已提交
318
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
319

H
HelloCrease 已提交
320 321 322 323 324 325 326 327
| 名称                     | 默认值  | 说明                      |
| ---------------------- | ---- | ----------------------- |
| NETWORK_TYPE_ANY       | 0    | 表示这个触发条件是任何类型的网络连接。     |
| NETWORK_TYPE_MOBILE    | 1    | 表示这个触发条件是Mobile网络连接。    |
| NETWORK_TYPE_WIFI      | 2    | 表示这个触发条件是Wifi类型的网络连接。   |
| NETWORK_TYPE_BLUETOOTH | 3    | 表示这个触发条件是Bluetooth网络连接。 |
| NETWORK_TYPE_WIFI_P2P  | 4    | 表示这个触发条件是Wifi P2P网络连接。  |
| NETWORK_TYPE_ETHERNET  | 5    | 表示这个触发条件是有线网络连接。        |
N
nobbo 已提交
328

N
nobbo 已提交
329
## ChargingType
N
nobbo 已提交
330 331
触发工作的充电类型。

H
HelloCrease 已提交
332
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
333

H
HelloCrease 已提交
334 335 336 337 338 339
| 名称                        | 默认值  | 说明                   |
| ------------------------- | ---- | -------------------- |
| CHARGING_PLUGGED_ANY      | 0    | 表示这个触发条件是任何类型的充电器连接。 |
| CHARGING_PLUGGED_AC       | 1    | 表示这个触发条件是直流充电器连接。    |
| CHARGING_PLUGGED_USB      | 2    | 表示这个触发条件是USB充连接。     |
| CHARGING_PLUGGED_WIRELESS | 3    | 表示这个触发条件是无线充电器连接。    |
N
nobbo 已提交
340

N
nobbo 已提交
341
## BatteryStatus
N
nobbo 已提交
342 343
触发工作的电池状态。

H
HelloCrease 已提交
344
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
345

H
HelloCrease 已提交
346 347 348 349 350
| 名称                         | 默认值  | 说明                         |
| -------------------------- | ---- | -------------------------- |
| BATTERY_STATUS_LOW         | 0    | 表示这个触发条件是低电告警。             |
| BATTERY_STATUS_OKAY        | 1    | 表示这个触发条件是从低电恢复到正常电量。       |
| BATTERY_STATUS_LOW_OR_OKAY | 2    | 表示这个触发条件是从低电恢复到正常电量或者低电告警。 |
N
nobbo 已提交
351

N
nobbo 已提交
352
## StorageRequest
N
nobbo 已提交
353 354
触发工作的存储状态。

H
HelloCrease 已提交
355
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
356

H
HelloCrease 已提交
357 358 359 360 361
| 名称                        | 默认值  | 说明                             |
| ------------------------- | ---- | ------------------------------ |
| STORAGE_LEVEL_LOW         | 0    | 表示这个触发条件是存储空间不足。               |
| STORAGE_LEVEL_OKAY        | 1    | 表示这个触发条件是从存储空间不足恢复到正常。         |
| STORAGE_LEVEL_LOW_OR_OKAY | 2    | 表示这个触发条件是从存储空间不足恢复到正常或者存储空间不足。 |