• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 延迟任务调度
2
3本模块提供延迟任务注册、取消、查询的能力。
4
5开发者在开发应用时,通过调用延迟任务注册接口,注册对实时性要求不高的延迟任务,该任务默认由系统安排,在系统空闲时根据性能、功耗、热等情况进行调度执行。
6
7> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
8> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
9
10
11## 导入模块
12
13```
14import workScheduler from '@ohos.workScheduler'
15```
16
17## workScheduler.startWork
18startWork(work: WorkInfo): boolean
19
20通知WorkSchedulerService将工作添加到执行队列。
21
22**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
23
24**参数**:
25
26| 参数名  | 类型                    | 必填   | 说明             |
27| ---- | --------------------- | ---- | -------------- |
28| work | [WorkInfo](#workinfo) | 是    | 指示要添加到执行队列的工作。 |
29
30**返回值**:
31
32| 类型      | 说明                               |
33| ------- | -------------------------------- |
34| boolean | 如果工作成功添加到执行队列,则返回true,否则返回false。 |
35
36**示例**:
37
38```
39  let workInfo = {
40      workId: 1,
41      batteryLevel:50,
42      batteryStatus:workScheduler.BatteryStatus.BATTERY_STATUS_LOW,
43      isRepeat: false,
44      isPersisted: true,
45      bundleName: "com.example.myapplication",
46      abilityName: "MyExtension"
47  }
48  var res = workScheduler.startWork(workInfo);
49  console.info("workschedulerLog res:" + res);
50```
51
52## workScheduler.stopWork
53stopWork(work: WorkInfo, needCancel?: boolean): boolean
54
55通知WorkSchedulerService停止指定工作。
56
57**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
58
59**参数**:
60
61| 参数名        | 类型                    | 必填   | 说明         |
62| ---------- | --------------------- | ---- | ---------- |
63| work       | [WorkInfo](#workinfo) | 是    | 指示要停止的工作。  |
64| needCancel | boolean               | 是    | 是否需要取消的工作。 |
65
66**返回值**:
67
68| 类型      | 说明                      |
69| ------- | ----------------------- |
70| boolean | 如果成功,则返回true,否则返回false。 |
71
72**示例**:
73
74```
75  let workInfo = {
76      workId: 1,
77      batteryLevel:50,
78      batteryStatus:workScheduler.BatteryStatus.BATTERY_STATUS_LOW,
79      isRepeat: false,
80      isPersisted: true,
81      bundleName: "com.example.myapplication",
82      abilityName: "MyExtension"
83     }
84  var res = workScheduler.stopWork(workInfo, false);
85  console.info("workschedulerLog res:" + res);
86```
87
88## workScheduler.getWorkStatus
89getWorkStatus(workId: number, callback : AsyncCallback\<WorkInfo>): void
90
91获取工作的最新状态,使用Callback形式返回。
92
93**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
94
95**参数**:
96
97| 参数名      | 类型                                    | 必填   | 说明                                       |
98| -------- | ------------------------------------- | ---- | ---------------------------------------- |
99| workId   | number                                | 是    | work的id。                                 |
100| callback | AsyncCallback\<[WorkInfo](#workinfo)> | 是    | 指定的callback回调方法。如果指定的工作Id有效,则返回从WorkSchedulerService获取的有效工作状态;否则返回null。 |
101
102**示例**:
103
104```
105  workScheduler.getWorkStatus(50, (err, res) => {
106    if (err) {
107      console.info('workschedulerLog getWorkStatus failed, because:' + err.data);
108    } else {
109      for (let item in res) {
110        console.info('workschedulerLog getWorkStatus success,' + item + ' is:' + res[item]);
111      }
112    }
113  });
114```
115
116## workScheduler.getWorkStatus
117getWorkStatus(workId: number): Promise\<WorkInfo>
118
119获取工作的最新状态,使用Promise形式返回。
120
121**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
122
123**参数**:
124
125| 参数名    | 类型     | 必填   | 说明       |
126| ------ | ------ | ---- | -------- |
127| workId | number | 是    | work的id。 |
128
129**返回值**:
130
131| 类型                              | 说明                                       |
132| ------------------------------- | ---------------------------------------- |
133| Promise\<[WorkInfo](#workinfo)> | 指定的Promise回调方法。如果指定的工作ID有效,则返回从WorkSchedulerService获取的有效工作状态;否则返回null。 |
134
135**示例**:
136
137```
138  workScheduler.getWorkStatus(50).then((res) => {
139    for (let item in res) {
140      console.info('workschedulerLog getWorkStatus success,' + item + ' is:' + res[item]);
141    }
142  }).catch((err) => {
143    console.info('workschedulerLog getWorkStatus failed, because:' + err.data);
144  })
145```
146
147## workScheduler.obtainAllWorks
148obtainAllWorks(callback : AsyncCallback\<void>): Array\<WorkInfo>
149
150获取与当前应用程序关联的所有工作,使用Callback形式返回。
151
152**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
153
154**参数**:
155
156| 参数名      | 类型                   | 必填   | 说明                              |
157| -------- | -------------------- | ---- | ------------------------------- |
158| callback | AsyncCallback\<void> | 是    | 指定的callback回调方法。返回与应用程序关联的所有工作。 |
159
160**返回值**:
161
162| 类型                            | 说明              |
163| ----------------------------- | --------------- |
164| Array\<[WorkInfo](#workinfo)> | 返回与应用程序关联的所有工作。 |
165
166**示例**:
167
168```
169  workScheduler.obtainAllWorks((err, res) =>{
170    if (err) {
171      console.info('workschedulerLog obtainAllWorks failed, because:' + err.data);
172    } else {
173      console.info('workschedulerLog obtainAllWorks success, data is:' + JSON.stringify(res));
174    }
175  });
176```
177
178## workScheduler.obtainAllWorks
179obtainAllWorks(): Promise<Array\<WorkInfo>>
180
181获取与当前应用程序关联的所有工作,使用Promise形式返回。
182
183**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
184
185**返回值**:
186
187| 类型                                     | 说明                             |
188| -------------------------------------- | ------------------------------ |
189| Promise<Array\<[WorkInfo](#workinfo)>> | 指定的Promise回调方法。返回与应用程序关联的所有工作。 |
190
191**示例**:
192
193```
194  workScheduler.obtainAllWorks().then((res) => {
195    console.info('workschedulerLog obtainAllWorks success, data is:' + JSON.stringify(res));
196  }).catch((err) => {
197    console.info('workschedulerLog obtainAllWorks failed, because:' + err.data);
198  })
199```
200
201## workScheduler.stopAndClearWorks
202stopAndClearWorks(): boolean
203
204停止和取消与当前应用程序关联的所有工作。
205
206**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
207
208**示例**:
209
210```
211  let res = workScheduler.stopAndClearWorks();
212  console.info("workschedulerLog res:" + res);
213```
214
215## workScheduler.isLastWorkTimeOut
216isLastWorkTimeOut(workId: number, callback : AsyncCallback\<void>): boolean
217
218检查指定工作的最后一次执行是否为超时操作,使用Callback形式返回。
219
220**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
221
222**参数**:
223
224| 参数名      | 类型                   | 必填   | 说明                                       |
225| -------- | -------------------- | ---- | ---------------------------------------- |
226| workId   | number               | 是    | work的id。                                 |
227| callback | AsyncCallback\<void> | 是    | 指定的callback回调方法。如果指定工作的最后一次执行是超时操作,则返回true;否则返回false。 |
228
229**返回值**:
230
231| 类型      | 说明                                       |
232| ------- | ---------------------------------------- |
233| boolean | 指定的callback回调方法。如果指定工作的最后一次执行是超时操作,则返回true;否则返回false。 |
234
235**示例**:
236
237```
238  workScheduler.isLastWorkTimeOut(500, (err, res) =>{
239    if (err) {
240      console.info('workschedulerLog isLastWorkTimeOut failed, because:' + err.data);
241    } else {
242      console.info('workschedulerLog isLastWorkTimeOut success, data is:' + res);
243    }
244  });
245```
246
247## workScheduler.isLastWorkTimeOut
248isLastWorkTimeOut(workId: number): Promise\<boolean>
249
250检查指定工作的最后一次执行是否为超时操作,使用Promise形式返回。
251
252**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
253
254**参数**:
255
256| 参数名    | 类型     | 必填   | 说明       |
257| ------ | ------ | ---- | -------- |
258| workId | number | 是    | work的id。 |
259
260**返回值**:
261
262| 类型                | 说明                                       |
263| ----------------- | ---------------------------------------- |
264| Promise\<boolean> | 指定的Promise回调方法。如果指定工作的最后一次执行是超时操作,则返回true;否则返回false。 |
265
266**示例**:
267
268```
269  workScheduler.isLastWorkTimeOut(500)
270    .then(res => {
271      console.info('workschedulerLog isLastWorkTimeOut success, data is:' + res);
272    })
273    .catch(err =>  {
274      console.info('workschedulerLog isLastWorkTimeOut failed, because:' + err.data);
275    });
276```
277
278## WorkInfo
279提供工作的具体信息。WorkInfo设置参数约束见[延迟任务调度概述](../../task-management/work-scheduler-overview.md)
280
281**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.WorkScheduler
282
283| 参数名          | 类型                              | 必填 | 说明                             |
284| --------------- | --------------------------------- | ---- | -------------------------------- |
285| workId          | number                            | 是   | 当前工作的ID                     |
286| bundleName      | string                            | 是   | 延迟任务包名                     |
287| abilityName     | string                            | 是   | 延迟任务回调通知的组件名(必填) |
288| networkType     | [NetworkType](#networktype)       | 否   | 网络类型                         |
289| isCharging      | boolean                           | 否   | 是否充电                         |
290| chargerType     | [ChargingType](#chargingtype)     | 否   | 充电类型                         |
291| batteryLevel    | number                            | 否   | 电量                             |
292| batteryStatus   | [BatteryStatus](#batterystatus)   | 否   | 电池状态                         |
293| storageRequest  | [StorageRequest](#storagerequest) | 否   | 存储状态                         |
294| isRepeat        | boolean                           | 否   | 是否循环任务                     |
295| repeatCycleTime | number                            | 否   | 循环间隔                         |
296| repeatCount     | number                            | 否   | 循环次数                         |
297| isPersisted     | boolean                           | 否   | 是否持久化保存工作               |
298
299## NetworkType
300触发工作的网络类型。
301
302**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.WorkScheduler
303
304| 名称                     | 默认值  | 说明                      |
305| ---------------------- | ---- | ----------------------- |
306| NETWORK_TYPE_ANY       | 0    | 表示这个触发条件是任何类型的网络连接。     |
307| NETWORK_TYPE_MOBILE    | 1    | 表示这个触发条件是Mobile网络连接。    |
308| NETWORK_TYPE_WIFI      | 2    | 表示这个触发条件是Wifi类型的网络连接。   |
309| NETWORK_TYPE_BLUETOOTH | 3    | 表示这个触发条件是Bluetooth网络连接。 |
310| NETWORK_TYPE_WIFI_P2P  | 4    | 表示这个触发条件是Wifi P2P网络连接。  |
311| NETWORK_TYPE_ETHERNET  | 5    | 表示这个触发条件是有线网络连接。        |
312
313## ChargingType
314触发工作的充电类型。
315
316**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.WorkScheduler
317
318| 名称                        | 默认值  | 说明                   |
319| ------------------------- | ---- | -------------------- |
320| CHARGING_PLUGGED_ANY      | 0    | 表示这个触发条件是任何类型的充电器连接。 |
321| CHARGING_PLUGGED_AC       | 1    | 表示这个触发条件是直流充电器连接。    |
322| CHARGING_PLUGGED_USB      | 2    | 表示这个触发条件是USB充连接。     |
323| CHARGING_PLUGGED_WIRELESS | 3    | 表示这个触发条件是无线充电器连接。    |
324
325## BatteryStatus
326触发工作的电池状态。
327
328**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.WorkScheduler
329
330| 名称                         | 默认值  | 说明                         |
331| -------------------------- | ---- | -------------------------- |
332| BATTERY_STATUS_LOW         | 0    | 表示这个触发条件是低电告警。             |
333| BATTERY_STATUS_OKAY        | 1    | 表示这个触发条件是从低电恢复到正常电量。       |
334| BATTERY_STATUS_LOW_OR_OKAY | 2    | 表示这个触发条件是从低电恢复到正常电量或者低电告警。 |
335
336## StorageRequest
337触发工作的存储状态。
338
339**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.WorkScheduler
340
341  |名称    |默认值    |说明|
342  | -------- | -------- | -------- |
343  |STORAGE_LEVEL_LOW    |0    |表示这个触发条件是存储空间不足。
344  |STORAGE_LEVEL_OKAY    |1    |表示这个触发条件是从存储空间不足恢复到正常。
345  |STORAGE_LEVEL_LOW_OR_OKAY    |2    |表示这个触发条件是从存储空间不足恢复到正常或者存储空间不足。