js-apis-backgroundTaskManager.md 34.8 KB
Newer Older
廖康康 已提交
1 2
# 后台任务管理

廖康康 已提交
3
本模块提供后台任务管理能力。
廖康康 已提交
4

廖康康 已提交
5 6
当应用或业务模块处于后台(无可见界面)时,如果有需要继续执行或者后续执行的业务,可基于业务类型,申请短时任务延迟挂起(Suspend)或者长时任务避免进入挂起状态。

廖康康 已提交
7
应用有不可中断且短时间能完成的任务时(如,用户在文件管理器上点击垃圾文件清理,若清理未完成时退到后台,文件管理器需要申请短时任务完成清理),可以使用短时任务机制。
廖康康 已提交
8 9

应用中存在用户能够直观感受到的且需要一直在后台运行的业务时(如,后台播放音乐),可以使用长时任务机制。
廖康康 已提交
10

11
对于系统特权应用,提供独立的能效资源申请接口。系统特权应用如果需要使用特定的系统资源,例如在被挂起期间仍然能够收到系统公共事件,可以使用能效资源申请接口。
Z
Zhao-PengFei35 已提交
12

H
HelloCrease 已提交
13
>  **说明:**
修改  
朱天怡 已提交
14 15
> - 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。从API version 9开始,导入模块由@ohos.backgroundTaskManager迁移至@ohos.resourceschedule.backgroundTaskManager
> - 后台任务管理错误码见[backgroundTaskManager错误码](../errorcodes/errorcode-backgroundTaskMgr.md)。
廖康康 已提交
16

修改  
朱天怡 已提交
17 18 19
## 导入模块

```js
修改  
朱天怡 已提交
20
import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';  
廖康康 已提交
21 22
```

修改  
朱天怡 已提交
23
## backgroundTaskManager.requestSuspendDelay<sup>9+</sup>
廖康康 已提交
24 25 26 27 28 29 30

requestSuspendDelay(reason: string, callback: Callback&lt;void&gt;): DelaySuspendInfo

后台应用申请延迟挂起。

延迟挂起时间一般情况下默认值为180000,低电量(依据系统低电量广播)时默认值为60000。

修改  
朱天怡 已提交
31
> 从 API version 9开始支持。
修改  
朱天怡 已提交
32

Z
zhangxin_T 已提交
33 34
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask

Z
zhangxin_T 已提交
35
**参数**
H
HelloCrease 已提交
36 37 38 39
| 参数名      | 类型                   | 必填   | 说明                             |
| -------- | -------------------- | ---- | ------------------------------ |
| reason   | string               | 是    | 延迟挂起申请的原因。                     |
| callback | Callback&lt;void&gt; | 是    | 延迟即将超时的回调函数,一般在超时前6秒通过此回调通知应用。 |
廖康康 已提交
40

Z
zhangxin_T 已提交
41
**返回值**
H
HelloCrease 已提交
42 43 44
| 类型                                    | 说明        |
| ------------------------------------- | --------- |
| [DelaySuspendInfo](#delaysuspendinfo) | 返回延迟挂起信息。 |
廖康康 已提交
45

Z
zhangxin_T 已提交
46
**示例**
W
wangqing 已提交
47

Z
zhangxin_T 已提交
48
  ```js
修改  
朱天怡 已提交
49 50
  import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';  

廖康康 已提交
51
  let myReason = 'test requestSuspendDelay';
修改  
朱天怡 已提交
52 53 54 55 56 57 58 59 60 61 62
  try {
    let delayInfo = backgroundTaskManager.requestSuspendDelay(myReason, () => {
        console.info("Request suspension delay will time out.");
    })
    var id = delayInfo.requestId;
    var time = delayInfo.actualDelayTime;
    console.info("The requestId is: " + id);
    console.info("The actualDelayTime is: " + time);
  } catch (error) {
    console.error(`requestSuspendDelay failed. code is ${error.code} message is ${error.message}`);
  }
廖康康 已提交
63 64 65
  ```


修改  
朱天怡 已提交
66
## backgroundTaskManager.getRemainingDelayTime<sup>9+</sup>
廖康康 已提交
67 68 69 70 71

getRemainingDelayTime(requestId: number, callback: AsyncCallback&lt;number&gt;): void

获取应用程序进入挂起状态前的剩余时间,使用callback形式返回。

修改  
朱天怡 已提交
72 73
> 从 API version 9开始支持。

Z
zhangxin_T 已提交
74 75
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask

Z
zhangxin_T 已提交
76
**参数**
H
HelloCrease 已提交
77 78 79 80
| 参数名       | 类型                          | 必填   | 说明                                       |
| --------- | --------------------------- | ---- | ---------------------------------------- |
| requestId | number                      | 是    | 延迟挂起的请求ID。                               |
| callback  | AsyncCallback&lt;number&gt; | 是    | 指定的callback回调方法。用于返回应用程序进入挂起状态之前的剩余时间,以毫秒为单位。 |
廖康康 已提交
81

Z
zhangxin_T 已提交
82
**示例**
W
wangqing 已提交
83

Z
zhangxin_T 已提交
84
  ```js
修改  
朱天怡 已提交
85 86
  import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';  

廖康康 已提交
87
  let id = 1;
修改  
朱天怡 已提交
88 89 90 91 92 93 94 95 96 97 98
  try {
    backgroundTaskManager.getRemainingDelayTime(id, (error, res) => {
        if(error) {
            console.error(`callback => Operation getRemainingDelayTime failed. code is ${error.code} message is ${error.message}`);
        } else {
            console.log('callback => Operation getRemainingDelayTime succeeded. Data: ' + JSON.stringify(res));
        }
    })
  } catch (error) {
    console.error(`callback => Operation getRemainingDelayTime failed. code is ${error.code} message is ${error.message}`);
  }
廖康康 已提交
99 100 101
  ```


修改  
朱天怡 已提交
102
## backgroundTaskManager.getRemainingDelayTime<sup>9+</sup>
廖康康 已提交
103 104 105 106 107

getRemainingDelayTime(requestId: number): Promise&lt;number&gt;

获取应用程序进入挂起状态前的剩余时间,使用Promise形式返回。

修改  
朱天怡 已提交
108 109
> 从 API version 9开始支持。

Z
zhangxin_T 已提交
110 111
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask

Z
zhangxin_T 已提交
112
**参数**
H
HelloCrease 已提交
113 114 115
| 参数名       | 类型     | 必填   | 说明         |
| --------- | ------ | ---- | ---------- |
| requestId | number | 是    | 延迟挂起的请求ID。 |
廖康康 已提交
116

Z
zhangxin_T 已提交
117
**返回值**
H
HelloCrease 已提交
118 119 120
| 类型                    | 说明                                       |
| --------------------- | ---------------------------------------- |
| Promise&lt;number&gt; | 指定的Promise回调方法。返回应用程序进入挂起状态之前的剩余时间,以毫秒为单位。 |
廖康康 已提交
121

Z
zhangxin_T 已提交
122 123
**示例**
  ```js
修改  
朱天怡 已提交
124 125
  import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';  

廖康康 已提交
126
  let id = 1;
修改  
朱天怡 已提交
127 128 129 130 131 132 133 134 135
  try {
    backgroundTaskManager.getRemainingDelayTime(id).then( res => {
        console.log('promise => Operation getRemainingDelayTime succeeded. Data: ' + JSON.stringify(res));
    }).catch( error => {
        console.error(`promise => Operation getRemainingDelayTime failed. code is ${error.code} message is ${error.message}`);
    })
  } catch (error) {
    console.error(`promise => Operation getRemainingDelayTime failed. code is ${error.code} message is ${error.message}`);
  }
廖康康 已提交
136 137 138
  ```


修改  
朱天怡 已提交
139
## backgroundTaskManager.cancelSuspendDelay<sup>9+</sup>
廖康康 已提交
140 141 142 143 144

cancelSuspendDelay(requestId: number): void

取消延迟挂起。

修改  
朱天怡 已提交
145 146
> 从 API version 9开始支持。

Z
zhangxin_T 已提交
147 148
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask

Z
zhangxin_T 已提交
149
**参数**
H
HelloCrease 已提交
150 151 152
| 参数名       | 类型     | 必填   | 说明         |
| --------- | ------ | ---- | ---------- |
| requestId | number | 是    | 延迟挂起的请求ID。 |
廖康康 已提交
153

Z
zhangxin_T 已提交
154 155
**示例**
  ```js
修改  
朱天怡 已提交
156 157
  import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';  

廖康康 已提交
158
  let id = 1;
修改  
朱天怡 已提交
159 160 161 162 163
  try {
    backgroundTaskManager.cancelSuspendDelay(id);
  } catch (error) {
    console.error(`cancelSuspendDelay failed. code is ${error.code} message is ${error.message}`);
  }
廖康康 已提交
164 165 166
  ```


修改  
朱天怡 已提交
167
## backgroundTaskManager.startBackgroundRunning<sup>9+</sup>
廖康康 已提交
168

Z
zhangxin_T 已提交
169
startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent, callback: AsyncCallback&lt;void&gt;): void
Z
zhangxin_T 已提交
170 171 172

向系统申请长时任务,使用callback形式返回结果。

修改  
朱天怡 已提交
173 174
> 从 API version 9开始支持。

Z
zhangxin_T 已提交
175 176
**需要权限:** ohos.permission.KEEP_BACKGROUND_RUNNING

Z
zhangxin_T 已提交
177 178
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask

Z
zhangxin_T 已提交
179
**参数**
H
HelloCrease 已提交
180 181 182 183 184 185
| 参数名       | 类型                                 | 必填   | 说明                                       |
| --------- | ---------------------------------- | ---- | ---------------------------------------- |
| context   | Context                            | 是    | 应用运行的上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。 |
| bgMode    | [BackgroundMode](#backgroundmode8) | 是    | 向系统申请的后台模式。                              |
| wantAgent | [WantAgent](js-apis-wantAgent.md)  | 是    | 通知参数,用于指定长时任务通知点击后跳转的界面。                 |
| callback  | AsyncCallback&lt;void&gt;          | 是    | callback形式返回启动长时任务的结果。                   |
Z
zhangxin_T 已提交
186

Z
zhangxin_T 已提交
187
**示例**
Z
zhangxin_T 已提交
188
```js
修改  
朱天怡 已提交
189
import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';  
Z
zhangxin_T 已提交
190 191 192
import featureAbility from '@ohos.ability.featureAbility';
import wantAgent from '@ohos.wantAgent';

修改  
朱天怡 已提交
193 194 195
function callback(error, data) {
    if (error) {
        console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
Z
zhangxin_T 已提交
196
    } else {
W
wangqing 已提交
197
        console.info("Operation startBackgroundRunning succeeded");
Z
zhangxin_T 已提交
198 199 200 201 202 203 204 205 206 207 208 209
    }
}

let wantAgentInfo = {
    wants: [
        {
            bundleName: "com.example.myapplication",
            abilityName: "com.example.myapplication.MainAbility"
        }
    ],
    operationType: wantAgent.OperationType.START_ABILITY,
    requestCode: 0,
W
wangqing 已提交
210
    wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
Z
zhangxin_T 已提交
211 212 213
};

wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
修改  
朱天怡 已提交
214 215 216 217 218 219
    try {
        backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(),
            backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj, callback)
    } catch (error) {
        console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
    }
Z
zhangxin_T 已提交
220 221 222 223
});

```

修改  
朱天怡 已提交
224
## backgroundTaskManager.startBackgroundRunning<sup>9+</sup>
Z
zhangxin_T 已提交
225

Z
zhangxin_T 已提交
226
startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent): Promise&lt;void&gt;
Z
zhangxin_T 已提交
227 228 229

向系统申请长时任务,使用promise形式返回结果。

修改  
朱天怡 已提交
230 231
> 从 API version 9开始支持。

Z
zhangxin_T 已提交
232 233
**需要权限:** ohos.permission.KEEP_BACKGROUND_RUNNING

Z
zhangxin_T 已提交
234 235
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask

Z
zhangxin_T 已提交
236
**参数**
W
wangqing 已提交
237

H
HelloCrease 已提交
238 239 240 241 242
| 参数名       | 类型                                 | 必填   | 说明                                       |
| --------- | ---------------------------------- | ---- | ---------------------------------------- |
| context   | Context                            | 是    | 应用运行的上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。 |
| bgMode    | [BackgroundMode](#backgroundmode8) | 是    | 向系统申请的后台模式。                              |
| wantAgent | [WantAgent](js-apis-wantAgent.md)  | 是    | 通知参数,用于指定长时任务通知点击跳转的界面。                  |
W
wangqing 已提交
243

244
**返回值**
H
HelloCrease 已提交
245 246 247
| 类型             | 说明               |
| -------------- | ---------------- |
| Promise\<void> | 使用Promise形式返回结果。 |
Z
zhangxin_T 已提交
248

Z
zhangxin_T 已提交
249
**示例**
Z
zhangxin_T 已提交
250
```js
修改  
朱天怡 已提交
251
import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';  
Z
zhangxin_T 已提交
252 253 254 255 256 257 258 259 260 261 262 263
import featureAbility from '@ohos.ability.featureAbility';
import wantAgent from '@ohos.wantAgent';

let wantAgentInfo = {
    wants: [
        {
            bundleName: "com.example.myapplication",
            abilityName: "com.example.myapplication.MainAbility"
        }
    ],
    operationType: wantAgent.OperationType.START_ABILITY,
    requestCode: 0,
W
wangqing 已提交
264
    wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
Z
zhangxin_T 已提交
265 266 267
};

wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
修改  
朱天怡 已提交
268 269 270 271 272 273 274 275 276 277
    try {
        backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(),
            backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => {
            console.info("Operation startBackgroundRunning succeeded");
        }).catch((error) => {
            console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
        });
    } catch (error) {
        console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
    }
Z
zhangxin_T 已提交
278 279 280 281
});

```

修改  
朱天怡 已提交
282
## backgroundTaskManager.stopBackgroundRunning<sup>9+</sup>
Z
zhangxin_T 已提交
283

Z
zhangxin_T 已提交
284
stopBackgroundRunning(context: Context, callback: AsyncCallback&lt;void&gt;): void
Z
zhangxin_T 已提交
285 286 287

向系统申请取消长时任务,使用callback形式返回结果。

修改  
朱天怡 已提交
288 289
> 从 API version 9开始支持。

Z
zhangxin_T 已提交
290 291
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask

Z
zhangxin_T 已提交
292
**参数**
H
HelloCrease 已提交
293 294 295 296
| 参数名      | 类型                        | 必填   | 说明                                       |
| -------- | ------------------------- | ---- | ---------------------------------------- |
| context  | Context                   | 是    | 应用运行的上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。 |
| callback | AsyncCallback&lt;void&gt; | 是    | callback形式返回启动长时任务的结果。                   |
Z
zhangxin_T 已提交
297

Z
zhangxin_T 已提交
298
**示例**
Z
zhangxin_T 已提交
299
```js
修改  
朱天怡 已提交
300
import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';  
Z
zhangxin_T 已提交
301 302
import featureAbility from '@ohos.ability.featureAbility';

修改  
朱天怡 已提交
303 304 305
function callback(error, data) {
    if (error) {
        console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
Z
zhangxin_T 已提交
306
    } else {
W
wangqing 已提交
307
        console.info("Operation stopBackgroundRunning succeeded");
Z
zhangxin_T 已提交
308 309 310
    }
}

修改  
朱天怡 已提交
311 312 313 314 315
try {
    backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext(), callback);
} catch (error) {
    console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
}
Z
zhangxin_T 已提交
316 317 318

```

修改  
朱天怡 已提交
319
## backgroundTaskManager.stopBackgroundRunning<sup>9+</sup>
Z
zhangxin_T 已提交
320

Z
zhangxin_T 已提交
321
stopBackgroundRunning(context: Context): Promise&lt;void&gt;
Z
zhangxin_T 已提交
322 323 324

向系统申请取消长时任务,使用promise形式返回结果。

修改  
朱天怡 已提交
325 326
> 从 API version 9开始支持。

Z
zhangxin_T 已提交
327 328
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask

Z
zhangxin_T 已提交
329
**参数**
H
HelloCrease 已提交
330 331
| 参数名     | 类型      | 必填   | 说明                                       |
| ------- | ------- | ---- | ---------------------------------------- |
Z
zhangxin_T 已提交
332
| context | Context | 是    | 应用运行的上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。 |
Z
zhangxin_T 已提交
333

334
**返回值**
H
HelloCrease 已提交
335 336 337
| 类型             | 说明               |
| -------------- | ---------------- |
| Promise\<void> | 使用Promise形式返回结果。 |
Z
zhangxin_T 已提交
338

Z
zhangxin_T 已提交
339
**示例**
Z
zhangxin_T 已提交
340
```js
修改  
朱天怡 已提交
341
import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';  
Z
zhangxin_T 已提交
342 343
import featureAbility from '@ohos.ability.featureAbility';

修改  
朱天怡 已提交
344 345 346 347 348 349 350 351 352
try {
    backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() => {
        console.info("Operation stopBackgroundRunning succeeded");
    }).catch((err) => {
        console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
    });
} catch (error) {
    console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
}
Z
zhangxin_T 已提交
353 354 355

```

356
## backgroundTaskManager.applyEfficiencyResources<sup>9+</sup>
Z
Zhao-PengFei35 已提交
357

修改  
朱天怡 已提交
358
applyEfficiencyResources(request: [EfficiencyResourcesRequest](#efficiencyresourcesrequest9)): void
Z
Zhao-PengFei35 已提交
359 360

向系统申请能效资源,使用boolean形式返回结果。
361
进程和它所属的应用可以同时申请某一类资源,例如CPU资源,但是应用释放资源的时候会将进程的资源一起释放。
Z
Zhao-PengFei35 已提交
362

修改  
朱天怡 已提交
363 364
> 从 API version 9开始支持。

365
**系统能力**: SystemCapability.ResourceSchedule.BackgroundTaskManager.EfficiencyResourcesApply
366

367
**系统API**: 此接口为系统接口。
Z
Zhao-PengFei35 已提交
368 369

**参数**
370

Z
Zhao-PengFei35 已提交
371 372
| 参数名     | 类型      | 必填   | 说明                                       |
| ------- | ------- | ---- | ---------------------------------------- |
373
| request | [EfficiencyResourcesRequest](#efficiencyresourcesrequest9) | 是    | 请求的必要信息。包括资源类型,超时时间等信息。详见[EfficiencyResourcesRequest](#efficiencyresourcesrequest9)。 |
Z
Zhao-PengFei35 已提交
374 375

**示例**
376

Z
Zhao-PengFei35 已提交
377
```js
修改  
朱天怡 已提交
378
import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';  
Z
Zhao-PengFei35 已提交
379 380 381 382 383 384 385 386 387

let request = {
    resourceTypes: backgroundTaskManager.ResourceType.CPU,
    isApply: true,
    timeOut: 0,
    reason: "apply",
    isPersist: true,
    isProcess: false,
};
修改  
朱天怡 已提交
388 389 390 391 392 393
try {
    backgroundTaskManager.applyEfficiencyResources(request);
    console.info("applyEfficiencyResources success. ");
} catch (error) {
    console.error(`applyEfficiencyResources failed. code is ${error.code} message is ${error.message}`);
}
Z
Zhao-PengFei35 已提交
394 395 396 397 398 399
```

## backgroundTaskManager.resetAllEfficiencyResources<sup>9+</sup>

resetAllEfficiencyResources(): void

400
释放所有已经申请的资源。
Z
Zhao-PengFei35 已提交
401

修改  
朱天怡 已提交
402 403
> 从 API version 9开始支持。

Z
Zhao-PengFei35 已提交
404
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.EfficiencyResourcesApply
405

406
**系统API**: 此接口为系统接口。
Z
Zhao-PengFei35 已提交
407 408

**示例**
409

Z
Zhao-PengFei35 已提交
410
```js
修改  
朱天怡 已提交
411
import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';  
Z
Zhao-PengFei35 已提交
412

修改  
朱天怡 已提交
413 414 415 416 417
try {
    backgroundTaskManager.backgroundTaskManager.resetAllEfficiencyResources();
} catch (error) {
    console.error(`resetAllEfficiencyResources failed. code is ${error.code} message is ${error.message}`);
}
Z
Zhao-PengFei35 已提交
418 419
```

修改  
朱天怡 已提交
420
## DelaySuspendInfo<sup>9+</sup>
Z
zhangxin_T 已提交
421 422 423

延迟挂起信息。

H
HelloCrease 已提交
424
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask
Z
zhangxin_T 已提交
425

H
HelloCrease 已提交
426 427 428 429
| 参数名             | 类型     | 必填   | 说明                                       |
| --------------- | ------ | ---- | ---------------------------------------- |
| requestId       | number | 是    | 延迟挂起的请求ID。                               |
| actualDelayTime | number | 是    | 应用的实际挂起延迟时间,以毫秒为单位。<br/>一般情况下默认值为180000,低电量(依据系统低电量广播)时默认值为60000。 |
Z
zhangxin_T 已提交
430 431


修改  
朱天怡 已提交
432
## BackgroundMode<sup>9+</sup>
Z
zhangxin_T 已提交
433

H
HelloCrease 已提交
434 435 436 437
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask

| 参数名                     | 参数值  | 描述                    |
| ----------------------- | ---- | --------------------- |
438 439 440 441 442 443
| DATA_TRANSFER           | 1    | 数据传输。                  |
| AUDIO_PLAYBACK          | 2    | 音频播放。                  |
| AUDIO_RECORDING         | 3    | 录音。                    |
| LOCATION                | 4    | 定位导航。                  |
| BLUETOOTH_INTERACTION   | 5    | 蓝牙相关。                  |
| MULTI_DEVICE_CONNECTION | 6    | 多设备互联。                 |
H
HelloCrease 已提交
444 445
| WIFI_INTERACTION        | 7    | WLAN相关<br />此接口为系统接口。 |
| VOIP                    | 8    | 音视频通话<br />此接口为系统接口。  |
446
| TASK_KEEPING            | 9    | 计算任务(仅在特定设备生效)。        |
Z
Zhao-PengFei35 已提交
447 448 449

## EfficiencyResourcesRequest<sup>9+</sup>

450
能效资源申请参数。
Z
Zhao-PengFei35 已提交
451 452 453

**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.EfficiencyResourcesApply

454 455
**系统API**: 此接口为系统接口。

Z
Zhao-PengFei35 已提交
456 457 458 459
| 参数名             | 类型     | 必填   | 说明                                       |
| --------------- | ------ | ---- | ---------------------------------------- |
| resourceTypes   | number  | 是    | 申请的资源类型。                               |
| isApply         | boolean | 是    | 申请资源或者是释放资源。          |
460
| timeOut         | number  | 是    | 资源的使用时间,以毫秒为单位。                |
Z
Zhao-PengFei35 已提交
461 462 463 464 465 466
| isPersist       | boolean | 否    | 是否永久持有资源,如果是true,那么timeOut就无效。    |
| isProcess       | boolean | 否    | 应用申请或者是进程申请。          |
| reason          | string  | 是    | 申请资源的原因。                |

## ResourceType<sup>9+</sup>

467 468
能效资源类型。

Z
Zhao-PengFei35 已提交
469 470
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.EfficiencyResourcesApply

471 472
**系统API**: 此接口为系统接口。

Z
Zhao-PengFei35 已提交
473 474
| 参数名                     | 参数值  | 描述                    |
| ----------------------- | ---- | --------------------- |
475 476 477 478 479 480
| CPU                     | 1    | CPU资源,申请后不被挂起。             |
| COMMON_EVENT            | 2    | 公共事件,申请后挂起状态下不被代理掉。  |
| TIMER                   | 4    | 计时器,申请后挂起状态下不被代理掉。    |
| WORK_SCHEDULER          | 8    | 延迟任务,申请后有更长的执行时间。      |
| BLUETOOTH               | 16   | 蓝牙相关,申请后挂起状态下不被代理掉。  |
| GPS                     | 32   | GPS相关,申请后挂起状态下不被代理掉。  |
修改  
朱天怡 已提交
481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844
| AUDIO                   | 64   | 音频资源,申请后挂起状态下不被代理掉。 |



## 导入模块

```js
import backgroundTaskManager from '@ohos.backgroundTaskManager';  
```


## backgroundTaskManager.requestSuspendDelay<sup>(deprecated)</sup>

requestSuspendDelay(reason: string, callback: Callback&lt;void&gt;): DelaySuspendInfo

后台应用申请延迟挂起。

延迟挂起时间一般情况下默认值为180000,低电量(依据系统低电量广播)时默认值为60000。

> **说明:** 从API version 9开始废弃,建议使用[backgroundTaskManager.requestSuspendDelay](#backgroundtaskmanagerrequestsuspenddelay9)
>
> 从 API version 7开始支持。

**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask

**参数**
| 参数名      | 类型                   | 必填   | 说明                             |
| -------- | -------------------- | ---- | ------------------------------ |
| reason   | string               | 是    | 延迟挂起申请的原因。                     |
| callback | Callback&lt;void&gt; | 是    | 延迟即将超时的回调函数,一般在超时前6秒通过此回调通知应用。 |

**返回值**
| 类型                                    | 说明        |
| ------------------------------------- | --------- |
| [DelaySuspendInfo](#delaysuspendinfo) | 返回延迟挂起信息。 |

**示例**

  ```js
  import backgroundTaskManager from '@ohos.backgroundTaskManager';

  let myReason = 'test requestSuspendDelay';
  let delayInfo = backgroundTaskManager.requestSuspendDelay(myReason, () => {
      console.info("Request suspension delay will time out.");
  })
  
  var id = delayInfo.requestId;
  var time = delayInfo.actualDelayTime;
  console.info("The requestId is: " + id);
  console.info("The actualDelayTime is: " + time);
  ```


## backgroundTaskManager.getRemainingDelayTime<sup>7+(deprecated)</sup>

getRemainingDelayTime(requestId: number, callback: AsyncCallback&lt;number&gt;): void

获取应用程序进入挂起状态前的剩余时间,使用callback形式返回。

> **说明:** 从API version 9开始废弃,建议使用[backgroundTaskManager.getRemainingDelayTime](#backgroundtaskmanagergetremainingdelaytime9)
>
> 从 API version 7开始支持。

**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask

**参数**
| 参数名       | 类型                          | 必填   | 说明                                       |
| --------- | --------------------------- | ---- | ---------------------------------------- |
| requestId | number                      | 是    | 延迟挂起的请求ID。                               |
| callback  | AsyncCallback&lt;number&gt; | 是    | 指定的callback回调方法。用于返回应用程序进入挂起状态之前的剩余时间,以毫秒为单位。 |

**示例**

  ```js
  import backgroundTaskManager from '@ohos.backgroundTaskManager';

  let id = 1;
  backgroundTaskManager.getRemainingDelayTime(id, (err, res) => {
      if(err) {
          console.log('callback => Operation getRemainingDelayTime failed. Cause: ' + err.code);
      } else {
          console.log('callback => Operation getRemainingDelayTime succeeded. Data: ' + JSON.stringify(res));
      }
  })
  ```


## backgroundTaskManager.getRemainingDelayTime<sup>7+(deprecated)</sup>

getRemainingDelayTime(requestId: number): Promise&lt;number&gt;

获取应用程序进入挂起状态前的剩余时间,使用Promise形式返回。

> **说明:** 从API version 9开始废弃,建议使用[backgroundTaskManager.getRemainingDelayTime](#backgroundtaskmanagergetremainingdelaytime9)
>
> 从 API version 7开始支持。

**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask

**参数**
| 参数名       | 类型     | 必填   | 说明         |
| --------- | ------ | ---- | ---------- |
| requestId | number | 是    | 延迟挂起的请求ID。 |

**返回值**
| 类型                    | 说明                                       |
| --------------------- | ---------------------------------------- |
| Promise&lt;number&gt; | 指定的Promise回调方法。返回应用程序进入挂起状态之前的剩余时间,以毫秒为单位。 |

**示例**
  ```js
  import backgroundTaskManager from '@ohos.backgroundTaskManager';

  let id = 1;
  backgroundTaskManager.getRemainingDelayTime(id).then( res => {
      console.log('promise => Operation getRemainingDelayTime succeeded. Data: ' + JSON.stringify(res));
  }).catch( err => {
      console.log('promise => Operation getRemainingDelayTime failed. Cause: ' + err.code);
  })
  ```


## backgroundTaskManager.cancelSuspendDelay<sup>7+(deprecated)</sup>

cancelSuspendDelay(requestId: number): void

取消延迟挂起。

> **说明:** 从API version 9开始废弃,建议使用[backgroundTaskManager.cancelSuspendDelay](#backgroundtaskmanagercancelsuspenddelay9)
>
> 从 API version 7开始支持。

**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask

**参数**
| 参数名       | 类型     | 必填   | 说明         |
| --------- | ------ | ---- | ---------- |
| requestId | number | 是    | 延迟挂起的请求ID。 |

**示例**
  ```js
  import backgroundTaskManager from '@ohos.backgroundTaskManager';

  let id = 1;
  backgroundTaskManager.cancelSuspendDelay(id);
  ```


## backgroundTaskManager.startBackgroundRunning<sup>8+(deprecated)</sup>

startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent, callback: AsyncCallback&lt;void&gt;): void

向系统申请长时任务,使用callback形式返回结果。

> **说明:** 从API version 9开始废弃,建议使用[backgroundTaskManager.startBackgroundRunning](#backgroundtaskmanagerstartbackgroundrunning9)
>
> 从 API version 7开始支持。

**需要权限:** ohos.permission.KEEP_BACKGROUND_RUNNING

**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask

**参数**
| 参数名       | 类型                                 | 必填   | 说明                                       |
| --------- | ---------------------------------- | ---- | ---------------------------------------- |
| context   | Context                            | 是    | 应用运行的上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。 |
| bgMode    | [BackgroundMode](#backgroundmode8) | 是    | 向系统申请的后台模式。                              |
| wantAgent | [WantAgent](js-apis-wantAgent.md)  | 是    | 通知参数,用于指定长时任务通知点击后跳转的界面。                 |
| callback  | AsyncCallback&lt;void&gt;          | 是    | callback形式返回启动长时任务的结果。                   |

**示例**
```js
import backgroundTaskManager from '@ohos.backgroundTaskManager';
import featureAbility from '@ohos.ability.featureAbility';
import wantAgent from '@ohos.wantAgent';

function callback(err, data) {
    if (err) {
        console.error("Operation startBackgroundRunning failed Cause: " + err);
    } else {
        console.info("Operation startBackgroundRunning succeeded");
    }
}

let wantAgentInfo = {
    wants: [
        {
            bundleName: "com.example.myapplication",
            abilityName: "com.example.myapplication.MainAbility"
        }
    ],
    operationType: wantAgent.OperationType.START_ABILITY,
    requestCode: 0,
    wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
};

wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
    backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(),
        backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj, callback)
});

```

## backgroundTaskManager.startBackgroundRunning<sup>8+(deprecated)</sup>

startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent): Promise&lt;void&gt;

向系统申请长时任务,使用promise形式返回结果。

> **说明:** 从API version 9开始废弃,建议使用[backgroundTaskManager.startBackgroundRunning](#backgroundtaskmanagerstartbackgroundrunning9)
>
> 从 API version 7开始支持。

**需要权限:** ohos.permission.KEEP_BACKGROUND_RUNNING

**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask

**参数**

| 参数名       | 类型                                 | 必填   | 说明                                       |
| --------- | ---------------------------------- | ---- | ---------------------------------------- |
| context   | Context                            | 是    | 应用运行的上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。 |
| bgMode    | [BackgroundMode](#backgroundmode8) | 是    | 向系统申请的后台模式。                              |
| wantAgent | [WantAgent](js-apis-wantAgent.md)  | 是    | 通知参数,用于指定长时任务通知点击跳转的界面。                  |

**返回值**
| 类型             | 说明               |
| -------------- | ---------------- |
| Promise\<void> | 使用Promise形式返回结果。 |

**示例**
```js
import backgroundTaskManager from '@ohos.backgroundTaskManager';
import featureAbility from '@ohos.ability.featureAbility';
import wantAgent from '@ohos.wantAgent';

let wantAgentInfo = {
    wants: [
        {
            bundleName: "com.example.myapplication",
            abilityName: "com.example.myapplication.MainAbility"
        }
    ],
    operationType: wantAgent.OperationType.START_ABILITY,
    requestCode: 0,
    wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
};

wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
    backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(),
        backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => {
        console.info("Operation startBackgroundRunning succeeded");
    }).catch((err) => {
        console.error("Operation startBackgroundRunning failed Cause: " + err);
    });
});

```

## backgroundTaskManager.stopBackgroundRunning<sup>8+(deprecated)</sup>

stopBackgroundRunning(context: Context, callback: AsyncCallback&lt;void&gt;): void

向系统申请取消长时任务,使用callback形式返回结果。

> **说明:** 从API version 9开始废弃,建议使用[backgroundTaskManager.stopBackgroundRunning](#backgroundtaskmanagerstopbackgroundrunning9)
>
> 从 API version 7开始支持。

**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask

**参数**
| 参数名      | 类型                        | 必填   | 说明                                       |
| -------- | ------------------------- | ---- | ---------------------------------------- |
| context  | Context                   | 是    | 应用运行的上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。 |
| callback | AsyncCallback&lt;void&gt; | 是    | callback形式返回启动长时任务的结果。                   |

**示例**
```js
import backgroundTaskManager from '@ohos.backgroundTaskManager';
import featureAbility from '@ohos.ability.featureAbility';

function callback(err, data) {
    if (err) {
        console.error("Operation stopBackgroundRunning failed Cause: " + err);
    } else {
        console.info("Operation stopBackgroundRunning succeeded");
    }
}

backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext(), callback);

```

## backgroundTaskManager.stopBackgroundRunning<sup>8+(deprecated)</sup>

stopBackgroundRunning(context: Context): Promise&lt;void&gt;

向系统申请取消长时任务,使用promise形式返回结果。

> **说明:** 从API version 9开始废弃,建议使用[backgroundTaskManager.stopBackgroundRunning](#backgroundtaskmanagerstopbackgroundrunning9)
>
> 从 API version 7开始支持。

**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask

**参数**
| 参数名     | 类型      | 必填   | 说明                                       |
| ------- | ------- | ---- | ---------------------------------------- |
| context | Context | 是    | 应用运行的上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。 |

**返回值**
| 类型             | 说明               |
| -------------- | ---------------- |
| Promise\<void> | 使用Promise形式返回结果。 |

**示例**
```js
import backgroundTaskManager from '@ohos.backgroundTaskManager';
import featureAbility from '@ohos.ability.featureAbility';

backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() => {
    console.info("Operation stopBackgroundRunning succeeded");
}).catch((err) => {
    console.error("Operation stopBackgroundRunning failed Cause: " + err);
});

```

## DelaySuspendInfo<sup>7+(deprecated)</sup>

延迟挂起信息。

> **说明:** 从API version 9开始废弃,建议使用[backgroundTaskManager.DelaySuspendInfo](#backgroundtaskmanagerdelaysuspendinfo9)
>
> 从 API version 7开始支持。

**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask

| 参数名             | 类型     | 必填   | 说明                                       |
| --------------- | ------ | ---- | ---------------------------------------- |
| requestId       | number | 是    | 延迟挂起的请求ID。                               |
| actualDelayTime | number | 是    | 应用的实际挂起延迟时间,以毫秒为单位。<br/>一般情况下默认值为180000,低电量(依据系统低电量广播)时默认值为60000。 |


## BackgroundMode<sup>8+(deprecated)</sup>

> **说明:** 从API version 9开始废弃,建议使用[backgroundTaskManager.BackgroundMode](#backgroundtaskmanagerbackgroundmode9)
>
> 从 API version 7开始支持。

**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask

| 参数名                     | 参数值  | 描述                    |
| ----------------------- | ---- | --------------------- |
| DATA_TRANSFER           | 1    | 数据传输。                  |
| AUDIO_PLAYBACK          | 2    | 音频播放。                  |
| AUDIO_RECORDING         | 3    | 录音。                    |
| LOCATION                | 4    | 定位导航。                  |
| BLUETOOTH_INTERACTION   | 5    | 蓝牙相关。                  |
| MULTI_DEVICE_CONNECTION | 6    | 多设备互联。                 |
| WIFI_INTERACTION        | 7    | WLAN相关<br />此接口为系统接口。 |
| VOIP                    | 8    | 音视频通话<br />此接口为系统接口。  |
| TASK_KEEPING            | 9    | 计算任务(仅在特定设备生效)。        |