1e41f4b71Sopenharmony_ci# @ohos.backgroundTaskManager (后台任务管理) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci本模块提供后台任务管理能力。 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci当应用或业务模块处于后台(无可见界面)时,如果有需要继续执行或者后续执行的业务,可基于业务类型,申请短时任务延迟挂起(Suspend)或者长时任务避免进入挂起状态。 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ci应用有不可中断且短时间能完成的任务时(如,用户在文件管理器上点击垃圾文件清理,若清理未完成时退到后台,文件管理器需要申请短时任务完成清理),可以使用短时任务机制。 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci应用中存在用户能够直观感受到的且需要一直在后台运行的业务时(如,后台播放音乐),可以使用长时任务机制。 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci 12e41f4b71Sopenharmony_ci> **说明:** 13e41f4b71Sopenharmony_ci> 14e41f4b71Sopenharmony_ci> - 从API Version 9 开始,该接口不再维护,推荐使用新接口[@ohos.resourceschedule.backgroundTaskManager (后台任务管理)](js-apis-resourceschedule-backgroundTaskManager.md)。 15e41f4b71Sopenharmony_ci> 16e41f4b71Sopenharmony_ci> - 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 17e41f4b71Sopenharmony_ci 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci## 导入模块 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci```ts 22e41f4b71Sopenharmony_ciimport backgroundTaskManager from '@ohos.backgroundTaskManager'; 23e41f4b71Sopenharmony_ci``` 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci 26e41f4b71Sopenharmony_ci## backgroundTaskManager.requestSuspendDelay 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_cirequestSuspendDelay(reason: string, callback: Callback<void>): DelaySuspendInfo 29e41f4b71Sopenharmony_ci 30e41f4b71Sopenharmony_ci后台应用申请延迟挂起。 31e41f4b71Sopenharmony_ci 32e41f4b71Sopenharmony_ci延迟挂起时间一般情况下默认值为3分钟,低电量(依据系统低电量广播)时默认值为1分钟。 33e41f4b71Sopenharmony_ci 34e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask 35e41f4b71Sopenharmony_ci 36e41f4b71Sopenharmony_ci**参数**: 37e41f4b71Sopenharmony_ci 38e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 39e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------ | 40e41f4b71Sopenharmony_ci| reason | string | 是 | 延迟挂起申请的原因。 | 41e41f4b71Sopenharmony_ci| callback | Callback<void> | 是 | 延迟即将超时的回调函数,一般在超时前6秒通过此回调通知应用。 | 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci**返回值**: 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci| 类型 | 说明 | 46e41f4b71Sopenharmony_ci| ------------------------------------- | --------- | 47e41f4b71Sopenharmony_ci| [DelaySuspendInfo](#delaysuspendinfo) | 返回延迟挂起信息。 | 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ci**示例**: 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ci ```ts 52e41f4b71Sopenharmony_ci import backgroundTaskManager from '@ohos.backgroundTaskManager'; 53e41f4b71Sopenharmony_ci import { BusinessError } from '@ohos.base'; 54e41f4b71Sopenharmony_ci 55e41f4b71Sopenharmony_ci // 设置延迟任务挂起的原因 56e41f4b71Sopenharmony_ci let myReason = 'test requestSuspendDelay'; 57e41f4b71Sopenharmony_ci // 申请延迟任务 58e41f4b71Sopenharmony_ci let delayInfo = backgroundTaskManager.requestSuspendDelay(myReason, () => { 59e41f4b71Sopenharmony_ci console.info("Request suspension delay will time out."); 60e41f4b71Sopenharmony_ci }) 61e41f4b71Sopenharmony_ci // 打印延迟任务信息 62e41f4b71Sopenharmony_ci let id = delayInfo.requestId; 63e41f4b71Sopenharmony_ci let time = delayInfo.actualDelayTime; 64e41f4b71Sopenharmony_ci console.info("The requestId is: " + id); 65e41f4b71Sopenharmony_ci console.info("The actualDelayTime is: " + time); 66e41f4b71Sopenharmony_ci ``` 67e41f4b71Sopenharmony_ci 68e41f4b71Sopenharmony_ci 69e41f4b71Sopenharmony_ci## backgroundTaskManager.getRemainingDelayTime 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_cigetRemainingDelayTime(requestId: number, callback: AsyncCallback<number>): void 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ci获取应用程序进入挂起状态前的剩余时间,使用callback形式返回。 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ci**参数**: 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 80e41f4b71Sopenharmony_ci| --------- | --------------------------- | ---- | ---------------------------------------- | 81e41f4b71Sopenharmony_ci| requestId | number | 是 | 延迟挂起的请求ID。这个值通过调用[requestSuspendDelay](#backgroundtaskmanagerrequestsuspenddelay)方法获取。 | 82e41f4b71Sopenharmony_ci| callback | AsyncCallback<number> | 是 | 指定的callback回调方法。用于返回应用程序进入挂起状态之前的剩余时间,以毫秒为单位。 | 83e41f4b71Sopenharmony_ci 84e41f4b71Sopenharmony_ci**示例**: 85e41f4b71Sopenharmony_ci 86e41f4b71Sopenharmony_ci ```ts 87e41f4b71Sopenharmony_ci import backgroundTaskManager from '@ohos.backgroundTaskManager'; 88e41f4b71Sopenharmony_ci import { BusinessError } from '@ohos.base'; 89e41f4b71Sopenharmony_ci 90e41f4b71Sopenharmony_ci let delayInfo = backgroundTaskManager.requestSuspendDelay("test", () => {}); 91e41f4b71Sopenharmony_ci backgroundTaskManager.getRemainingDelayTime(delayInfo.requestId, (err: BusinessError, res: number) => { 92e41f4b71Sopenharmony_ci if(err) { 93e41f4b71Sopenharmony_ci console.log('callback => Operation getRemainingDelayTime failed. Cause: ' + err.code); 94e41f4b71Sopenharmony_ci } else { 95e41f4b71Sopenharmony_ci console.log('callback => Operation getRemainingDelayTime succeeded. Data: ' + JSON.stringify(res)); 96e41f4b71Sopenharmony_ci } 97e41f4b71Sopenharmony_ci }) 98e41f4b71Sopenharmony_ci ``` 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci 101e41f4b71Sopenharmony_ci## backgroundTaskManager.getRemainingDelayTime 102e41f4b71Sopenharmony_ci 103e41f4b71Sopenharmony_cigetRemainingDelayTime(requestId: number): Promise<number> 104e41f4b71Sopenharmony_ci 105e41f4b71Sopenharmony_ci获取应用程序进入挂起状态前的剩余时间,使用Promise形式返回。 106e41f4b71Sopenharmony_ci 107e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask 108e41f4b71Sopenharmony_ci 109e41f4b71Sopenharmony_ci**参数**: 110e41f4b71Sopenharmony_ci 111e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 112e41f4b71Sopenharmony_ci| --------- | ------ | ---- | ---------- | 113e41f4b71Sopenharmony_ci| requestId | number | 是 | 延迟挂起的请求ID。这个值通过调用[requestSuspendDelay](#backgroundtaskmanagerrequestsuspenddelay)方法获取。 | 114e41f4b71Sopenharmony_ci 115e41f4b71Sopenharmony_ci**返回值**: 116e41f4b71Sopenharmony_ci 117e41f4b71Sopenharmony_ci| 类型 | 说明 | 118e41f4b71Sopenharmony_ci| --------------------- | ---------------------------------------- | 119e41f4b71Sopenharmony_ci| Promise<number> | 指定的Promise回调方法。返回应用程序进入挂起状态之前的剩余时间,以毫秒为单位。 | 120e41f4b71Sopenharmony_ci 121e41f4b71Sopenharmony_ci**示例**: 122e41f4b71Sopenharmony_ci 123e41f4b71Sopenharmony_ci```ts 124e41f4b71Sopenharmony_ciimport backgroundTaskManager from '@ohos.backgroundTaskManager'; 125e41f4b71Sopenharmony_ciimport { BusinessError } from '@ohos.base'; 126e41f4b71Sopenharmony_ci 127e41f4b71Sopenharmony_cilet delayInfo = backgroundTaskManager.requestSuspendDelay("test", () => {}); 128e41f4b71Sopenharmony_ci backgroundTaskManager.getRemainingDelayTime(delayInfo.requestId).then((res:number) => { 129e41f4b71Sopenharmony_ci console.log('promise => Operation getRemainingDelayTime succeeded. Data: ' + JSON.stringify(res)); 130e41f4b71Sopenharmony_ci}).catch((err : BusinessError) => { 131e41f4b71Sopenharmony_ci console.log('promise => Operation getRemainingDelayTime failed. Cause: ' + err.code); 132e41f4b71Sopenharmony_ci}) 133e41f4b71Sopenharmony_ci``` 134e41f4b71Sopenharmony_ci 135e41f4b71Sopenharmony_ci 136e41f4b71Sopenharmony_ci## backgroundTaskManager.cancelSuspendDelay 137e41f4b71Sopenharmony_ci 138e41f4b71Sopenharmony_cicancelSuspendDelay(requestId: number): void 139e41f4b71Sopenharmony_ci 140e41f4b71Sopenharmony_ci取消延迟挂起。 141e41f4b71Sopenharmony_ci 142e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ci**参数**: 145e41f4b71Sopenharmony_ci 146e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 147e41f4b71Sopenharmony_ci| --------- | ------ | ---- | ---------- | 148e41f4b71Sopenharmony_ci| requestId | number | 是 | 延迟挂起的请求ID。这个值通过调用[requestSuspendDelay](#backgroundtaskmanagerrequestsuspenddelay)方法获取。 | 149e41f4b71Sopenharmony_ci 150e41f4b71Sopenharmony_ci**示例**: 151e41f4b71Sopenharmony_ci 152e41f4b71Sopenharmony_ci ```ts 153e41f4b71Sopenharmony_ci let delayInfo = backgroundTaskManager.requestSuspendDelay("test", () => {}); 154e41f4b71Sopenharmony_ci backgroundTaskManager.cancelSuspendDelay(delayInfo.requestId); 155e41f4b71Sopenharmony_ci ``` 156e41f4b71Sopenharmony_ci 157e41f4b71Sopenharmony_ci 158e41f4b71Sopenharmony_ci## backgroundTaskManager.startBackgroundRunning<sup>8+</sup> 159e41f4b71Sopenharmony_ci 160e41f4b71Sopenharmony_cistartBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent, callback: AsyncCallback<void>): void 161e41f4b71Sopenharmony_ci 162e41f4b71Sopenharmony_ci向系统申请长时任务,使用callback形式返回结果。 163e41f4b71Sopenharmony_ci 164e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.KEEP_BACKGROUND_RUNNING 165e41f4b71Sopenharmony_ci 166e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask 167e41f4b71Sopenharmony_ci 168e41f4b71Sopenharmony_ci**参数**: 169e41f4b71Sopenharmony_ci 170e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 171e41f4b71Sopenharmony_ci| --------- | --------------------------------------------- | ---- | ------------------------------------------------------------ | 172e41f4b71Sopenharmony_ci| context | Context | 是 | 应用运行的上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-context.md)。 | 173e41f4b71Sopenharmony_ci| bgMode | [BackgroundMode](#backgroundmode8) | 是 | 向系统申请的后台模式。 | 174e41f4b71Sopenharmony_ci| wantAgent | [WantAgent](../apis-ability-kit/js-apis-app-ability-wantAgent.md) | 是 | 通知参数,用于指定长时任务通知点击后跳转的界面。 | 175e41f4b71Sopenharmony_ci| callback | AsyncCallback<void> | 是 | callback形式返回启动长时任务的结果。 | 176e41f4b71Sopenharmony_ci 177e41f4b71Sopenharmony_ci**示例**: 178e41f4b71Sopenharmony_ci 179e41f4b71Sopenharmony_ciFA模型示例: 180e41f4b71Sopenharmony_ci 181e41f4b71Sopenharmony_ci```js 182e41f4b71Sopenharmony_ciimport backgroundTaskManager from '@ohos.backgroundTaskManager'; 183e41f4b71Sopenharmony_ciimport featureAbility from '@ohos.ability.featureAbility'; 184e41f4b71Sopenharmony_ciimport wantAgent, { WantAgent } from '@ohos.app.ability.wantAgent'; 185e41f4b71Sopenharmony_ciimport { BusinessError } from '@ohos.base'; 186e41f4b71Sopenharmony_ci 187e41f4b71Sopenharmony_cifunction callback(err: BusinessError, data: void) { 188e41f4b71Sopenharmony_ci if (err) { 189e41f4b71Sopenharmony_ci console.error("Operation startBackgroundRunning failed Cause: " + err); 190e41f4b71Sopenharmony_ci } else { 191e41f4b71Sopenharmony_ci console.info("Operation startBackgroundRunning succeeded"); 192e41f4b71Sopenharmony_ci } 193e41f4b71Sopenharmony_ci} 194e41f4b71Sopenharmony_ci 195e41f4b71Sopenharmony_cilet wantAgentInfo : wantAgent.WantAgentInfo = { 196e41f4b71Sopenharmony_ci wants: [ 197e41f4b71Sopenharmony_ci { 198e41f4b71Sopenharmony_ci bundleName: "com.example.myapplication", 199e41f4b71Sopenharmony_ci abilityName: "EntryAbility" 200e41f4b71Sopenharmony_ci } 201e41f4b71Sopenharmony_ci ], 202e41f4b71Sopenharmony_ci operationType: wantAgent.OperationType.START_ABILITY, 203e41f4b71Sopenharmony_ci requestCode: 0, 204e41f4b71Sopenharmony_ci wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] 205e41f4b71Sopenharmony_ci}; 206e41f4b71Sopenharmony_ci 207e41f4b71Sopenharmony_ciwantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj : WantAgent) => { 208e41f4b71Sopenharmony_ci backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), 209e41f4b71Sopenharmony_ci backgroundTaskManager.BackgroundMode.LOCATION, wantAgentObj, callback) 210e41f4b71Sopenharmony_ci}); 211e41f4b71Sopenharmony_ci 212e41f4b71Sopenharmony_ci``` 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ciStage模型示例: 215e41f4b71Sopenharmony_ci 216e41f4b71Sopenharmony_ci```ts 217e41f4b71Sopenharmony_ciimport UIAbility from '@ohos.app.ability.UIAbility'; 218e41f4b71Sopenharmony_ciimport backgroundTaskManager from '@ohos.backgroundTaskManager'; 219e41f4b71Sopenharmony_ciimport wantAgent, { WantAgent } from '@ohos.app.ability.wantAgent'; 220e41f4b71Sopenharmony_ciimport Want from '@ohos.app.ability.Want'; 221e41f4b71Sopenharmony_ciimport AbilityConstant from '@ohos.app.ability.AbilityConstant'; 222e41f4b71Sopenharmony_ciimport { BusinessError } from '@ohos.base'; 223e41f4b71Sopenharmony_ci 224e41f4b71Sopenharmony_cifunction callback(err: BusinessError, data: void) { 225e41f4b71Sopenharmony_ci if (err) { 226e41f4b71Sopenharmony_ci console.error("Operation startBackgroundRunning failed Cause: " + err); 227e41f4b71Sopenharmony_ci } else { 228e41f4b71Sopenharmony_ci console.info("Operation startBackgroundRunning succeeded"); 229e41f4b71Sopenharmony_ci } 230e41f4b71Sopenharmony_ci} 231e41f4b71Sopenharmony_ci 232e41f4b71Sopenharmony_ciexport default class EntryAbility extends UIAbility { 233e41f4b71Sopenharmony_ci onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { 234e41f4b71Sopenharmony_ci let wantAgentInfo : wantAgent.WantAgentInfo = { 235e41f4b71Sopenharmony_ci wants: [ 236e41f4b71Sopenharmony_ci { 237e41f4b71Sopenharmony_ci bundleName: "com.example.myapplication", 238e41f4b71Sopenharmony_ci abilityName: "EntryAbility" 239e41f4b71Sopenharmony_ci } 240e41f4b71Sopenharmony_ci ], 241e41f4b71Sopenharmony_ci operationType: wantAgent.OperationType.START_ABILITY, 242e41f4b71Sopenharmony_ci requestCode: 0, 243e41f4b71Sopenharmony_ci wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] 244e41f4b71Sopenharmony_ci }; 245e41f4b71Sopenharmony_ci 246e41f4b71Sopenharmony_ci wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj : WantAgent) => { 247e41f4b71Sopenharmony_ci backgroundTaskManager.startBackgroundRunning(this.context, 248e41f4b71Sopenharmony_ci backgroundTaskManager.BackgroundMode.LOCATION, wantAgentObj, callback) 249e41f4b71Sopenharmony_ci }); 250e41f4b71Sopenharmony_ci } 251e41f4b71Sopenharmony_ci}; 252e41f4b71Sopenharmony_ci``` 253e41f4b71Sopenharmony_ci 254e41f4b71Sopenharmony_ci## backgroundTaskManager.startBackgroundRunning<sup>8+</sup> 255e41f4b71Sopenharmony_ci 256e41f4b71Sopenharmony_cistartBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent): Promise<void> 257e41f4b71Sopenharmony_ci 258e41f4b71Sopenharmony_ci向系统申请长时任务,使用promise形式返回结果。 259e41f4b71Sopenharmony_ci 260e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.KEEP_BACKGROUND_RUNNING 261e41f4b71Sopenharmony_ci 262e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask 263e41f4b71Sopenharmony_ci 264e41f4b71Sopenharmony_ci**参数**: 265e41f4b71Sopenharmony_ci 266e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 267e41f4b71Sopenharmony_ci| --------- | --------------------------------------------- | ---- | ------------------------------------------------------------ | 268e41f4b71Sopenharmony_ci| context | Context | 是 | 应用运行的上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-context.md)。 | 269e41f4b71Sopenharmony_ci| bgMode | [BackgroundMode](#backgroundmode8) | 是 | 向系统申请的后台模式。 | 270e41f4b71Sopenharmony_ci| wantAgent | [WantAgent](../apis-ability-kit/js-apis-app-ability-wantAgent.md) | 是 | 通知参数,用于指定长时任务通知点击跳转的界面。 | 271e41f4b71Sopenharmony_ci 272e41f4b71Sopenharmony_ci**返回值**: 273e41f4b71Sopenharmony_ci 274e41f4b71Sopenharmony_ci| 类型 | 说明 | 275e41f4b71Sopenharmony_ci| -------------- | ---------------- | 276e41f4b71Sopenharmony_ci| Promise\<void> | 使用Promise形式返回结果。 | 277e41f4b71Sopenharmony_ci 278e41f4b71Sopenharmony_ci**示例**: 279e41f4b71Sopenharmony_ci 280e41f4b71Sopenharmony_ciFA模型示例(需使用js代码开发): 281e41f4b71Sopenharmony_ci 282e41f4b71Sopenharmony_ci```js 283e41f4b71Sopenharmony_ciimport backgroundTaskManager from '@ohos.backgroundTaskManager'; 284e41f4b71Sopenharmony_ciimport featureAbility from '@ohos.ability.featureAbility'; 285e41f4b71Sopenharmony_ciimport wantAgent, { WantAgent } from '@ohos.app.ability.wantAgent'; 286e41f4b71Sopenharmony_ciimport { BusinessError } from '@ohos.base'; 287e41f4b71Sopenharmony_ci 288e41f4b71Sopenharmony_cilet wantAgentInfo : wantAgent.WantAgentInfo = { 289e41f4b71Sopenharmony_ci wants: [ 290e41f4b71Sopenharmony_ci { 291e41f4b71Sopenharmony_ci bundleName: "com.example.myapplication", 292e41f4b71Sopenharmony_ci abilityName: "EntryAbility" 293e41f4b71Sopenharmony_ci } 294e41f4b71Sopenharmony_ci ], 295e41f4b71Sopenharmony_ci operationType: wantAgent.OperationType.START_ABILITY, 296e41f4b71Sopenharmony_ci requestCode: 0, 297e41f4b71Sopenharmony_ci wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] 298e41f4b71Sopenharmony_ci}; 299e41f4b71Sopenharmony_ci 300e41f4b71Sopenharmony_ciwantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj: WantAgent) => { 301e41f4b71Sopenharmony_ci backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), 302e41f4b71Sopenharmony_ci backgroundTaskManager.BackgroundMode.LOCATION, wantAgentObj).then(() => { 303e41f4b71Sopenharmony_ci console.info("Operation startBackgroundRunning succeeded"); 304e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 305e41f4b71Sopenharmony_ci console.error("Operation startBackgroundRunning failed Cause: " + err); 306e41f4b71Sopenharmony_ci }); 307e41f4b71Sopenharmony_ci}); 308e41f4b71Sopenharmony_ci``` 309e41f4b71Sopenharmony_ci 310e41f4b71Sopenharmony_ciStage模型示例: 311e41f4b71Sopenharmony_ci 312e41f4b71Sopenharmony_ci```ts 313e41f4b71Sopenharmony_ciimport UIAbility from '@ohos.app.ability.UIAbility'; 314e41f4b71Sopenharmony_ciimport backgroundTaskManager from '@ohos.backgroundTaskManager'; 315e41f4b71Sopenharmony_ciimport wantAgent, { WantAgent } from '@ohos.app.ability.wantAgent'; 316e41f4b71Sopenharmony_ciimport Want from '@ohos.app.ability.Want'; 317e41f4b71Sopenharmony_ciimport AbilityConstant from '@ohos.app.ability.AbilityConstant'; 318e41f4b71Sopenharmony_ciimport { BusinessError } from '@ohos.base'; 319e41f4b71Sopenharmony_ci 320e41f4b71Sopenharmony_ciexport default class EntryAbility extends UIAbility { 321e41f4b71Sopenharmony_ci onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { 322e41f4b71Sopenharmony_ci let wantAgentInfo : wantAgent.WantAgentInfo = { 323e41f4b71Sopenharmony_ci wants: [ 324e41f4b71Sopenharmony_ci { 325e41f4b71Sopenharmony_ci bundleName: "com.example.myapplication", 326e41f4b71Sopenharmony_ci abilityName: "EntryAbility" 327e41f4b71Sopenharmony_ci } 328e41f4b71Sopenharmony_ci ], 329e41f4b71Sopenharmony_ci // 点击通知后,动作类型 330e41f4b71Sopenharmony_ci operationType: wantAgent.OperationType.START_ABILITY, 331e41f4b71Sopenharmony_ci requestCode: 0, 332e41f4b71Sopenharmony_ci // 点击通知后,动作执行属性 333e41f4b71Sopenharmony_ci wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] 334e41f4b71Sopenharmony_ci }; 335e41f4b71Sopenharmony_ci 336e41f4b71Sopenharmony_ci wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj : WantAgent) => { 337e41f4b71Sopenharmony_ci backgroundTaskManager.startBackgroundRunning(this.context, 338e41f4b71Sopenharmony_ci backgroundTaskManager.BackgroundMode.LOCATION, wantAgentObj).then(() => { 339e41f4b71Sopenharmony_ci console.info("Operation startBackgroundRunning succeeded"); 340e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 341e41f4b71Sopenharmony_ci console.error("Operation startBackgroundRunning failed Cause: " + err); 342e41f4b71Sopenharmony_ci }); 343e41f4b71Sopenharmony_ci }); 344e41f4b71Sopenharmony_ci } 345e41f4b71Sopenharmony_ci}; 346e41f4b71Sopenharmony_ci``` 347e41f4b71Sopenharmony_ci 348e41f4b71Sopenharmony_ci## backgroundTaskManager.stopBackgroundRunning<sup>8+</sup> 349e41f4b71Sopenharmony_ci 350e41f4b71Sopenharmony_cistopBackgroundRunning(context: Context, callback: AsyncCallback<void>): void 351e41f4b71Sopenharmony_ci 352e41f4b71Sopenharmony_ci向系统申请取消长时任务,使用callback形式返回结果。 353e41f4b71Sopenharmony_ci 354e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask 355e41f4b71Sopenharmony_ci 356e41f4b71Sopenharmony_ci**参数**: 357e41f4b71Sopenharmony_ci 358e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 359e41f4b71Sopenharmony_ci| -------- | ------------------------- | ---- | ---------------------------------------- | 360e41f4b71Sopenharmony_ci| context | Context | 是 | 应用运行的上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-context.md)。 | 361e41f4b71Sopenharmony_ci| callback | AsyncCallback<void> | 是 | callback形式返回启动长时任务的结果。 | 362e41f4b71Sopenharmony_ci 363e41f4b71Sopenharmony_ci**示例**: 364e41f4b71Sopenharmony_ci 365e41f4b71Sopenharmony_ciFA模型示例(需使用js代码开发): 366e41f4b71Sopenharmony_ci 367e41f4b71Sopenharmony_ci```js 368e41f4b71Sopenharmony_ciimport backgroundTaskManager from '@ohos.backgroundTaskManager'; 369e41f4b71Sopenharmony_ciimport featureAbility from '@ohos.ability.featureAbility'; 370e41f4b71Sopenharmony_ciimport { BusinessError } from '@ohos.base'; 371e41f4b71Sopenharmony_ci 372e41f4b71Sopenharmony_cifunction callback(err: BusinessError, data: void) { 373e41f4b71Sopenharmony_ci if (err) { 374e41f4b71Sopenharmony_ci console.error("Operation stopBackgroundRunning failed Cause: " + err); 375e41f4b71Sopenharmony_ci } else { 376e41f4b71Sopenharmony_ci console.info("Operation stopBackgroundRunning succeeded"); 377e41f4b71Sopenharmony_ci } 378e41f4b71Sopenharmony_ci} 379e41f4b71Sopenharmony_ci 380e41f4b71Sopenharmony_cibackgroundTaskManager.stopBackgroundRunning(featureAbility.getContext(), callback); 381e41f4b71Sopenharmony_ci 382e41f4b71Sopenharmony_ci``` 383e41f4b71Sopenharmony_ci 384e41f4b71Sopenharmony_ciStage模型示例: 385e41f4b71Sopenharmony_ci 386e41f4b71Sopenharmony_ci```ts 387e41f4b71Sopenharmony_ciimport UIAbility from '@ohos.app.ability.UIAbility'; 388e41f4b71Sopenharmony_ciimport backgroundTaskManager from '@ohos.backgroundTaskManager'; 389e41f4b71Sopenharmony_ciimport Want from '@ohos.app.ability.Want'; 390e41f4b71Sopenharmony_ciimport AbilityConstant from '@ohos.app.ability.AbilityConstant'; 391e41f4b71Sopenharmony_ciimport { BusinessError } from '@ohos.base'; 392e41f4b71Sopenharmony_ci 393e41f4b71Sopenharmony_cifunction callback(err: BusinessError, data: void) { 394e41f4b71Sopenharmony_ci if (err) { 395e41f4b71Sopenharmony_ci console.error("Operation stopBackgroundRunning failed Cause: " + err); 396e41f4b71Sopenharmony_ci } else { 397e41f4b71Sopenharmony_ci console.info("Operation stopBackgroundRunning succeeded"); 398e41f4b71Sopenharmony_ci } 399e41f4b71Sopenharmony_ci} 400e41f4b71Sopenharmony_ci 401e41f4b71Sopenharmony_ciexport default class EntryAbility extends UIAbility { 402e41f4b71Sopenharmony_ci onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { 403e41f4b71Sopenharmony_ci backgroundTaskManager.stopBackgroundRunning(this.context, callback); 404e41f4b71Sopenharmony_ci } 405e41f4b71Sopenharmony_ci}; 406e41f4b71Sopenharmony_ci``` 407e41f4b71Sopenharmony_ci 408e41f4b71Sopenharmony_ci## backgroundTaskManager.stopBackgroundRunning<sup>8+</sup> 409e41f4b71Sopenharmony_ci 410e41f4b71Sopenharmony_cistopBackgroundRunning(context: Context): Promise<void> 411e41f4b71Sopenharmony_ci 412e41f4b71Sopenharmony_ci向系统申请取消长时任务,使用promise形式返回结果。 413e41f4b71Sopenharmony_ci 414e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask 415e41f4b71Sopenharmony_ci 416e41f4b71Sopenharmony_ci**参数**: 417e41f4b71Sopenharmony_ci 418e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 419e41f4b71Sopenharmony_ci| ------- | ------- | ---- | ---------------------------------------- | 420e41f4b71Sopenharmony_ci| context | Context | 是 | 应用运行的上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-context.md)。 | 421e41f4b71Sopenharmony_ci 422e41f4b71Sopenharmony_ci**返回值**: 423e41f4b71Sopenharmony_ci 424e41f4b71Sopenharmony_ci| 类型 | 说明 | 425e41f4b71Sopenharmony_ci| -------------- | ---------------- | 426e41f4b71Sopenharmony_ci| Promise\<void> | 使用Promise形式返回结果。 | 427e41f4b71Sopenharmony_ci 428e41f4b71Sopenharmony_ci**示例**: 429e41f4b71Sopenharmony_ci 430e41f4b71Sopenharmony_ciFA模型示例: 431e41f4b71Sopenharmony_ci 432e41f4b71Sopenharmony_ci```js 433e41f4b71Sopenharmony_ciimport backgroundTaskManager from '@ohos.backgroundTaskManager'; 434e41f4b71Sopenharmony_ciimport featureAbility from '@ohos.ability.featureAbility'; 435e41f4b71Sopenharmony_ciimport { BusinessError } from '@ohos.base'; 436e41f4b71Sopenharmony_ci 437e41f4b71Sopenharmony_ci// 取消长时任务 438e41f4b71Sopenharmony_cibackgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() => { 439e41f4b71Sopenharmony_ci console.info("Operation stopBackgroundRunning succeeded"); 440e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 441e41f4b71Sopenharmony_ci console.error("Operation stopBackgroundRunning failed Cause: " + err); 442e41f4b71Sopenharmony_ci}); 443e41f4b71Sopenharmony_ci 444e41f4b71Sopenharmony_ci``` 445e41f4b71Sopenharmony_ci 446e41f4b71Sopenharmony_ciStage模型示例: 447e41f4b71Sopenharmony_ci 448e41f4b71Sopenharmony_ci```ts 449e41f4b71Sopenharmony_ciimport UIAbility from '@ohos.app.ability.UIAbility'; 450e41f4b71Sopenharmony_ciimport backgroundTaskManager from '@ohos.backgroundTaskManager'; 451e41f4b71Sopenharmony_ciimport Want from '@ohos.app.ability.Want'; 452e41f4b71Sopenharmony_ciimport AbilityConstant from '@ohos.app.ability.AbilityConstant'; 453e41f4b71Sopenharmony_ciimport { BusinessError } from '@ohos.base'; 454e41f4b71Sopenharmony_ci 455e41f4b71Sopenharmony_ciexport default class EntryAbility extends UIAbility { 456e41f4b71Sopenharmony_ci onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { 457e41f4b71Sopenharmony_ci // 取消长时任务 458e41f4b71Sopenharmony_ci backgroundTaskManager.stopBackgroundRunning(this.context).then(() => { 459e41f4b71Sopenharmony_ci console.info("Operation stopBackgroundRunning succeeded"); 460e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 461e41f4b71Sopenharmony_ci console.error("Operation stopBackgroundRunning failed Cause: " + err); 462e41f4b71Sopenharmony_ci }); 463e41f4b71Sopenharmony_ci } 464e41f4b71Sopenharmony_ci}; 465e41f4b71Sopenharmony_ci``` 466e41f4b71Sopenharmony_ci 467e41f4b71Sopenharmony_ci## DelaySuspendInfo 468e41f4b71Sopenharmony_ci 469e41f4b71Sopenharmony_ci延迟挂起信息。 470e41f4b71Sopenharmony_ci 471e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask 472e41f4b71Sopenharmony_ci 473e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 474e41f4b71Sopenharmony_ci| --------------- | ------ | ---- | ---------------------------------------- | 475e41f4b71Sopenharmony_ci| requestId | number | 是 | 延迟挂起的请求ID。 | 476e41f4b71Sopenharmony_ci| actualDelayTime | number | 是 | 应用的实际挂起延迟时间,以毫秒为单位。<br/>一般情况下默认值为180000,低电量(依据系统低电量广播)时默认值为60000。 | 477e41f4b71Sopenharmony_ci 478e41f4b71Sopenharmony_ci 479e41f4b71Sopenharmony_ci## BackgroundMode<sup>8+</sup> 480e41f4b71Sopenharmony_ci 481e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask 482e41f4b71Sopenharmony_ci 483e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 484e41f4b71Sopenharmony_ci| ----------------------- | ---- | --------------------- | 485e41f4b71Sopenharmony_ci| DATA_TRANSFER | 1 | 数据传输。 | 486e41f4b71Sopenharmony_ci| AUDIO_PLAYBACK | 2 | 音频播放。 | 487e41f4b71Sopenharmony_ci| AUDIO_RECORDING | 3 | 录音。 | 488e41f4b71Sopenharmony_ci| LOCATION | 4 | 定位导航。 | 489e41f4b71Sopenharmony_ci| BLUETOOTH_INTERACTION | 5 | 蓝牙相关。 | 490e41f4b71Sopenharmony_ci| MULTI_DEVICE_CONNECTION | 6 | 多设备互联。 | 491e41f4b71Sopenharmony_ci| TASK_KEEPING | 9 | 计算任务(仅在特定设备生效)。 | 492