js-apis-workScheduler.md 9.9 KB
Newer Older
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' 
```

## 系统能力
陈明 已提交
14
SystemCapability.ResourceSchedule.WorkScheduler
15

陈明 已提交
16
## workScheduler.startWork
17

陈明 已提交
18
workScheduler.startWork(work: WorkInfo): boolean
19

陈明 已提交
20
通知WorkSchedulerService将工作添加到执行队列。
21

陈明 已提交
22
- **参数**
23

陈明 已提交
24 25 26
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | work | WorkInfo | 是 | 指示要添加到执行队列的工作。 |
27

陈明 已提交
28
- **返回值**
29

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

陈明 已提交
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
- **示例**

  ```
	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);
  ```

## workScheduler.stopWork

stopWork(work: WorkInfo, needCancel?: boolean): boolean

通知WorkSchedulerService停止指定工作。
55 56 57


- **参数**
陈明 已提交
58

59 60
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
陈明 已提交
61
  | work | WorkInfo | 是 | 指示要停止的工作。 |
陈明 已提交
62
  |needCancel|boolean|	是|	是否需要取消的工作。|
63 64

- **返回值**
陈明 已提交
65

66 67
  | 类型 | 说明 |
  | -------- | -------- |
陈明 已提交
68
  | boolean | 如果成功,则返回true,否则返回false。 |
69 70

- **示例**
陈明 已提交
71

72
  ```
陈明 已提交
73 74 75 76 77 78 79 80 81 82 83
	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);
84 85
  ```

陈明 已提交
86
## workScheduler.getWorkStatus
87

陈明 已提交
88
getWorkStatus(workId: number, callback : AsyncCallback<WorkInfo>): void
89

陈明 已提交
90
获取工作的最新状态,使用callback形式返回。
91 92 93


- **参数**
陈明 已提交
94

95 96
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
陈明 已提交
97 98 99
  | workId | number | 是 | work的id。 |
  |callback|AsyncCallback<WorkInfo>|	是|	指定的callback回调方法。如果指定的工作Id有效,则返回从WorkSchedulerService获取的有效工作状态;否则返回null。|

100 101

- **示例**
陈明 已提交
102

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

陈明 已提交
115
## workScheduler.getWorkStatus
116

陈明 已提交
117
getWorkStatus(workID: number): Promise<WorkInfo>
118

陈明 已提交
119
获取工作的最新状态,使用Promise形式返回。
120 121

- **参数**
陈明 已提交
122

123 124
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
陈明 已提交
125
  | workId | number | 是 | work的id。 |
126 127

- **返回值**
陈明 已提交
128

129 130
  | 类型 | 说明 |
  | -------- | -------- |
陈明 已提交
131
  | Promise<WorkInfo> | 指定的Promise回调方法。如果指定的工作ID有效,则返回从WorkSchedulerService获取的有效工作状态;否则返回null。 |
132 133

- **示例**
陈明 已提交
134

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

陈明 已提交
145
## workScheduler.obtainAllWorks
146

陈明 已提交
147
obtainAllWorks(callback : AsyncCallback<void>): Array<WorkInfo>
148

陈明 已提交
149
获取与当前应用程序关联的所有工作,使用callback形式返回。
150 151

- **参数**
陈明 已提交
152

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


陈明 已提交
158
- **返回值**
159

陈明 已提交
160 161 162
  | 类型 | 说明 |
  | -------- | -------- |
  | Array<WorkInfo> | 返回与应用程序关联的所有工作。 |
163

陈明 已提交
164
- **示例**
165

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

陈明 已提交
176
## workScheduler.obtainAllWorks
177

陈明 已提交
178
obtainAllWorks(): Promise<Array<WorkInfo>>
179

陈明 已提交
180
获取与当前应用程序关联的所有工作,使用Promise形式返回。
181

陈明 已提交
182
- **返回值**
183

陈明 已提交
184 185 186
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<Array<WorkInfo>> |	指定的Promise回调方法。返回与应用程序关联的所有工作。|
187

陈明 已提交
188
- **示例**
189

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

陈明 已提交
198
## workScheduler.stopAndClearWorks
199

陈明 已提交
200
stopAndClearWorks(): boolean
201

陈明 已提交
202
停止和取消与当前应用程序关联的所有工作。
203 204 205

- **示例**

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

陈明 已提交
211
## workScheduler.isLastWorkTimeOut
212

陈明 已提交
213
isLastWorkTimeOut(workId: number, callback : AsyncCallback<void>): boolean
214

陈明 已提交
215
检查指定工作的最后一次执行是否为超时操作,使用callback形式返回。
216 217

- **参数**
陈明 已提交
218

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

陈明 已提交
224
- **返回值**
225

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

陈明 已提交
230
- **示例**
231

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

陈明 已提交
242
## workScheduler.isLastWorkTimeOut
243

陈明 已提交
244
obtainAllWorks(): Promise<Array<WorkInfo>>
245

陈明 已提交
246
检查指定工作的最后一次执行是否为超时操作,使用Promise形式返回。
247 248

- **参数**
陈明 已提交
249

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

- **返回值**
255

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

- **示例**

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

陈明 已提交
273 274
## workScheduler.WorkInfo
提供工作的具体信息。
275

陈明 已提交
276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  |workId	|number	|是	|当前工作的ID。|
  |bundleName	|string	|是|	延迟任务包名。|
  |abilityName | string| 是| 延迟任务回调通知的组件名(必填)|
  |networkType | NetworkType| 否| 网络条件 |
  |isCharging | bool| 否|是否充电 |
  |chargerType | ChargingType| 否|充电类型 |
  |batteryLevel | number| 否|电量|
  |batteryStatus| BatteryStatus| 否|电池状态|
  |storageRequest|StorageRequest| 否|存储状态|
  |isRepeat|boolean|否|是否循环任务|
  |repeatCycleTime |number|否|循环间隔|
  |repeatCount	|number|否|循环次数|

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

  |名称	|默认值	|说明|
  | -------- | -------- | -------- |
  |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	|表示这个触发条件是有线网络连接。|

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

  |名称	|默认值	|说明|
  | -------- | -------- | -------- |
  |CHARGING_PLUGGED_ANY	|0|	表示这个触发条件是任何类型的充电器连接。|
  |CHARGING_PLUGGED_AC	|1	|表示这个触发条件是直流充电器连接。|
  |CHARGING_PLUGGED_USB	|2	|表示这个触发条件是USB充连接。|
  |CHARGING_PLUGGED_WIRELESS	|3|	表示这个触发条件是无线充电器连接。|

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

  |名称	|默认值	|说明|
  | -------- | -------- | -------- |
  |BATTERY_STATUS_LOW	|0	|表示这个触发条件是低电告警。|
  |BATTERY_STATUS_OKAY	|1|	表示这个触发条件是从低电恢复到正常电量。|
  |BATTERY_STATUS_LOW_OR_OKAY	|2	|表示这个触发条件是从低电恢复到正常电量或者低电告警。|

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

  |名称	|默认值	|说明|
  | -------- | -------- | -------- |
  |STORAGE_LEVEL_LOW	|0	|表示这个触发条件是存储空间不足。
  |STORAGE_LEVEL_OKAY	|1	|表示这个触发条件是从存储空间不足恢复到正常。
  |STORAGE_LEVEL_LOW_OR_OKAY	|2	|表示这个触发条件是从存储空间不足恢复到正常或者存储空间不足。