js-apis-workScheduler.md 11.0 KB
Newer Older
N
nobbo 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13
# 延迟任务调度

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。


## 导入模块

```
import workScheduler from '@ohos.workScheduler' 
```

## workScheduler.startWork
N
nobbo 已提交
14
startWork(work: WorkInfo): boolean
N
nobbo 已提交
15 16 17

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

N
nobbo 已提交
18
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
19

N
nobbo 已提交
20
**参数**
N
nobbo 已提交
21

N
nobbo 已提交
22 23 24
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| work | [WorkInfo](#workinfo) | 是 | 指示要添加到执行队列的工作。 |
N
nobbo 已提交
25

N
nobbo 已提交
26
**返回值**
N
nobbo 已提交
27

N
nobbo 已提交
28 29 30
| 类型 | 说明 |
| -------- | -------- |
| boolean | 如果工作成功添加到执行队列,则返回true,否则返回false。 |
N
nobbo 已提交
31

N
nobbo 已提交
32
**示例**
N
nobbo 已提交
33

N
nobbo 已提交
34 35 36 37 38 39 40 41 42 43 44 45 46
```
  let workInfo = {
      workId: 1,
      batteryLevel:50,
      batteryStatus:workScheduler.BatteryStatus.BATTERY_STATUS_LOW,
      isRepeat: false,
      isPersisted: true,
      bundleName: "com.example.myapplication",
      abilityName: "MyExtension"
  }
  var res = workScheduler.startWork(workInfo);
  console.info("workschedulerLog res:" + res);
```
N
nobbo 已提交
47

N
nobbo 已提交
48 49
## workScheduler.stopWork
stopWork(work: WorkInfo, needCancel?: boolean): boolean
N
nobbo 已提交
50 51 52

通知WorkSchedulerService停止指定工作。

N
nobbo 已提交
53
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
54

N
nobbo 已提交
55
**参数**
N
nobbo 已提交
56

N
nobbo 已提交
57 58 59 60
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| work | [WorkInfo](#workinfo) | 是 | 指示要停止的工作。 |
|needCancel|boolean|    是|    是否需要取消的工作。|
N
nobbo 已提交
61

N
nobbo 已提交
62
**返回值**
N
nobbo 已提交
63

N
nobbo 已提交
64 65 66
| 类型 | 说明 |
| -------- | -------- |
| boolean | 如果成功,则返回true,否则返回false。 |
N
nobbo 已提交
67

N
nobbo 已提交
68
**示例**
N
nobbo 已提交
69

N
nobbo 已提交
70 71 72 73 74 75 76 77 78 79 80 81 82
```
  let workInfo = {
      workId: 1,
      batteryLevel:50,
      batteryStatus:workScheduler.BatteryStatus.BATTERY_STATUS_LOW,
      isRepeat: false,
      isPersisted: true,
      bundleName: "com.example.myapplication",
      abilityName: "MyExtension"
     }
  var res = workScheduler.stopWork(workInfo, false);
  console.info("workschedulerLog res:" + res);
```
N
nobbo 已提交
83

N
nobbo 已提交
84 85
## workScheduler.getWorkStatus
getWorkStatus(workId: number, callback : AsyncCallback\<WorkInfo>): void
N
nobbo 已提交
86 87 88

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

N
nobbo 已提交
89
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
90

N
nobbo 已提交
91
**参数**
N
nobbo 已提交
92

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

N
nobbo 已提交
98
**示例**
N
nobbo 已提交
99

N
nobbo 已提交
100 101 102 103 104 105 106
```
  workScheduler.getWorkStatus(50, (err, res) => {
    if (err) {
      console.info('workschedulerLog getWorkStatus failed, because:' + err.data);
    } else {
      for (let item in res) {
        console.info('workschedulerLog getWorkStatus success,' + item + ' is:' + res[item]);
N
nobbo 已提交
107
      }
N
nobbo 已提交
108 109 110
    }
  });
```
N
nobbo 已提交
111 112

## workScheduler.getWorkStatus
N
nobbo 已提交
113
getWorkStatus(workID: number): Promise\<WorkInfo>
N
nobbo 已提交
114 115 116

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

N
nobbo 已提交
117
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
118

N
nobbo 已提交
119
**参数**
N
nobbo 已提交
120

N
nobbo 已提交
121 122 123
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| workId | number | 是 | work的id。 |
N
nobbo 已提交
124

N
nobbo 已提交
125
**返回值**
N
nobbo 已提交
126

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

N
nobbo 已提交
131
**示例**
N
nobbo 已提交
132

N
nobbo 已提交
133 134 135 136 137 138 139 140 141
```
  workScheduler.getWorkStatus(50).then((res) => {
    for (let item in res) {
      console.info('workschedulerLog getWorkStatus success,' + item + ' is:' + res[item]);
    }
  }).catch((err) => {
    console.info('workschedulerLog getWorkStatus failed, because:' + err.data);
  })
```
N
nobbo 已提交
142

N
nobbo 已提交
143 144
## workScheduler.obtainAllWorks
obtainAllWorks(callback : AsyncCallback\<void>): Array\<WorkInfo>
N
nobbo 已提交
145 146 147

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

N
nobbo 已提交
148
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
149

N
nobbo 已提交
150
**参数**
N
nobbo 已提交
151

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

N
nobbo 已提交
156
**返回值**
N
nobbo 已提交
157

N
nobbo 已提交
158 159 160
| 类型 | 说明 |
| -------- | -------- |
| Array\<[WorkInfo](#workinfo)> | 返回与应用程序关联的所有工作。 |
N
nobbo 已提交
161

N
nobbo 已提交
162
**示例**
N
nobbo 已提交
163

N
nobbo 已提交
164 165 166 167 168 169 170 171 172
```
  workScheduler.obtainAllWorks((err, res) =>{
    if (err) {
      console.info('workschedulerLog obtainAllWorks failed, because:' + err.data);
    } else {
      console.info('workschedulerLog obtainAllWorks success, data is:' + JSON.stringify(res));
    }
  });
```
N
nobbo 已提交
173 174

## workScheduler.obtainAllWorks
N
nobbo 已提交
175
obtainAllWorks(): Promise<Array\<WorkInfo>>
N
nobbo 已提交
176 177 178

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

N
nobbo 已提交
179
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
180

N
nobbo 已提交
181
**返回值**
N
nobbo 已提交
182

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

N
nobbo 已提交
187
**示例**
N
nobbo 已提交
188

N
nobbo 已提交
189 190 191 192 193 194 195
```
  workScheduler.obtainAllWorks().then((res) => {
    console.info('workschedulerLog obtainAllWorks success, data is:' + JSON.stringify(res));
  }).catch((err) => {
    console.info('workschedulerLog obtainAllWorks failed, because:' + err.data);
  })
```
N
nobbo 已提交
196

N
nobbo 已提交
197
## workScheduler.stopAndClearWorks
N
nobbo 已提交
198 199 200 201
stopAndClearWorks(): boolean

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

N
nobbo 已提交
202
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
203

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

N
nobbo 已提交
206 207 208 209
```
  let res = workScheduler.stopAndClearWorks();
  console.info("workschedulerLog res:" + res);
```
N
nobbo 已提交
210

N
nobbo 已提交
211
## workScheduler.isLastWorkTimeOut
N
nobbo 已提交
212 213 214 215
isLastWorkTimeOut(workId: number, callback : AsyncCallback\<void>): boolean

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

N
nobbo 已提交
216
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
N
nobbo 已提交
217

N
nobbo 已提交
218
**参数**
N
nobbo 已提交
219

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

N
nobbo 已提交
225
**返回值**
N
nobbo 已提交
226

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

N
nobbo 已提交
231
**示例**
N
nobbo 已提交
232

N
nobbo 已提交
233 234 235 236 237 238 239 240 241
```
  workScheduler.isLastWorkTimeOut(500, (err, res) =>{
    if (err) {
      console.info('workschedulerLog isLastWorkTimeOut failed, because:' + err.data);
    } else {
      console.info('workschedulerLog isLastWorkTimeOut success, data is:' + res);
    }
  });
```
N
nobbo 已提交
242

N
nobbo 已提交
243
## workScheduler.isLastWorkTimeOut
N
nobbo 已提交
244 245 246 247
isLastWorkTimeOut(workId: number): Promise\<boolean>

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

N
nobbo 已提交
248 249 250
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

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

N
nobbo 已提交
252 253 254
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| workId | number | 是 | work的id。 |
N
nobbo 已提交
255

N
nobbo 已提交
256
**返回值**
N
nobbo 已提交
257

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

N
nobbo 已提交
262
**示例**
N
nobbo 已提交
263

N
nobbo 已提交
264 265 266 267
```
  workScheduler.isLastWorkTimeOut(500)
    .then(res => {
      console.info('workschedulerLog isLastWorkTimeOut success, data is:' + res);
N
nobbo 已提交
268
    })
N
nobbo 已提交
269 270 271 272 273
    .catch(err =>  {
      console.info('workschedulerLog isLastWorkTimeOut failed, because:' + err.data);
    });
  })
```
N
nobbo 已提交
274

N
nobbo 已提交
275
## WorkInfo
N
nobbo 已提交
276 277
提供工作的具体信息。

N
nobbo 已提交
278 279
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

N
nobbo 已提交
280 281 282 283 284
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
|workId    |number    |是    |当前工作的ID。|
|bundleName    |string    |是|    延迟任务包名。|
|abilityName | string| 是| 延迟任务回调通知的组件名(必填)|
N
nobbo 已提交
285
|networkType | [NetworkType](#networktype) | 否| 网络条件 |
N
nobbo 已提交
286
|isCharging | bool| 否|是否充电 |
N
nobbo 已提交
287
|chargerType | [ChargingType](#chargingtype) | 否|充电类型 |
N
nobbo 已提交
288
|batteryLevel | number| 否|电量|
N
nobbo 已提交
289 290
|batteryStatus| [BatteryStatus](#batterystatus) | 否|电池状态|
|storageRequest|[StorageRequest](#storagerequest)| 否|存储状态|
N
nobbo 已提交
291 292 293 294
|isRepeat|boolean|否|是否循环任务|
|repeatCycleTime |number|否|循环间隔|
|repeatCount    |number|否|循环次数|

N
nobbo 已提交
295
## NetworkType
N
nobbo 已提交
296 297
触发工作的网络类型。

N
nobbo 已提交
298 299
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

N
nobbo 已提交
300 301 302 303 304 305 306 307 308
  |名称    |默认值    |说明|
  | -------- | -------- | -------- |
  |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 已提交
309
## ChargingType
N
nobbo 已提交
310 311
触发工作的充电类型。

N
nobbo 已提交
312 313
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

N
nobbo 已提交
314 315 316 317 318 319 320
  |名称    |默认值    |说明|
  | -------- | -------- | -------- |
  |CHARGING_PLUGGED_ANY    |0|    表示这个触发条件是任何类型的充电器连接。|
  |CHARGING_PLUGGED_AC    |1    |表示这个触发条件是直流充电器连接。|
  |CHARGING_PLUGGED_USB    |2    |表示这个触发条件是USB充连接。|
  |CHARGING_PLUGGED_WIRELESS    |3|    表示这个触发条件是无线充电器连接。|

N
nobbo 已提交
321
## BatteryStatus
N
nobbo 已提交
322 323
触发工作的电池状态。

N
nobbo 已提交
324 325
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

N
nobbo 已提交
326 327 328 329 330 331
  |名称    |默认值    |说明|
  | -------- | -------- | -------- |
  |BATTERY_STATUS_LOW    |0    |表示这个触发条件是低电告警。|
  |BATTERY_STATUS_OKAY    |1|    表示这个触发条件是从低电恢复到正常电量。|
  |BATTERY_STATUS_LOW_OR_OKAY    |2    |表示这个触发条件是从低电恢复到正常电量或者低电告警。|

N
nobbo 已提交
332
## StorageRequest
N
nobbo 已提交
333 334
触发工作的存储状态。

N
nobbo 已提交
335 336
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler

N
nobbo 已提交
337 338 339 340
  |名称    |默认值    |说明|
  | -------- | -------- | -------- |
  |STORAGE_LEVEL_LOW    |0    |表示这个触发条件是存储空间不足。
  |STORAGE_LEVEL_OKAY    |1    |表示这个触发条件是从存储空间不足恢复到正常。
陈明 已提交
341
  |STORAGE_LEVEL_LOW_OR_OKAY    |2    |表示这个触发条件是从存储空间不足恢复到正常或者存储空间不足。