d5a1e6ab创建于 2025年3月17日历史提交

@ohos.resourceschedule.backgroundTaskManager (后台任务管理)

本模块提供申请后台任务的接口。当应用退至后台时,开发者可以通过本模块接口为应用申请短时、长时任务,避免应用进程被终止或挂起。

说明:

本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

import { backgroundTaskManager } from '@kit.BackgroundTasksKit';

backgroundTaskManager.requestSuspendDelay

requestSuspendDelay(reason: string, callback: Callback<void>): DelaySuspendInfo

申请短时任务。

说明:

短时任务的申请和使用过程中的约束与限制请参考指南

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

参数

参数名 类型 必填 说明
reason string 申请短时任务的原因。
callback Callback<void> 短时任务即将超时的回调函数,一般在超时前6秒,通过此回调通知应用。

返回值

类型 说明
DelaySuspendInfo 返回短时任务信息。

错误码

以下错误码的详细介绍请参见通用错误码backgroundTaskManager错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameters types.
9800001 Memory operation failed.
9800002 Parcel operation failed.
9800003 Internal transaction failed.
9800004 System service operation failed.
9900001 Caller information verification failed for a transient task.
9900002 Transient task verification failed.

示例

import { BusinessError } from '@kit.BasicServicesKit';

let myReason = 'test requestSuspendDelay';
try {
    let delayInfo = backgroundTaskManager.requestSuspendDelay(myReason, () => {
    // 回调函数。应用申请的短时任务即将超时,通过此函数回调应用,执行一些清理和标注工作,并取消短时任务。
    // 此处回调与应用的业务功能不耦合,短时任务申请成功后,正常执行应用本身的业务。
        console.info("Request suspension delay will time out.");
    })
    let id = delayInfo.requestId;
    let time = delayInfo.actualDelayTime;
    console.info("The requestId is: " + id);
    console.info("The actualDelayTime is: " + time);
} catch (error) {
    console.error(`requestSuspendDelay failed. code is ${(error as BusinessError).code} message is ${(error as BusinessError).message}`);
}

backgroundTaskManager.getRemainingDelayTime

getRemainingDelayTime(requestId: number, callback: AsyncCallback<number>): void

获取本次短时任务的剩余时间,使用callback异步回调。

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

参数

参数名 类型 必填 说明
requestId number 短时任务的请求ID。
callback AsyncCallback<number> 回调函数,返回本次短时任务的剩余时间,单位为毫秒。

错误码

以下错误码的详细介绍请参见通用错误码backgroundTaskManager错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameters types; 3. Parameter verification failed.
9800001 Memory operation failed.
9800002 Parcel operation failed.
9800003 Internal transaction failed.
9800004 System service operation failed.
9900001 Caller information verification failed for a transient task.
9900002 Transient task verification failed.

示例

import { BusinessError } from '@kit.BasicServicesKit';

let id = 1;
backgroundTaskManager.getRemainingDelayTime(id, (error: BusinessError, res: number) => {
    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));
    }
})

backgroundTaskManager.getRemainingDelayTime

getRemainingDelayTime(requestId: number): Promise<number>

获取本次短时任务的剩余时间,使用promise异步回调。

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

参数

参数名 类型 必填 说明
requestId number 短时任务的请求ID。

返回值

类型 说明
Promise<number> Promise对象,返回本次短时任务的剩余时间,单位为毫秒。

错误码

以下错误码的详细介绍请参见通用错误码backgroundTaskManager错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameters types; 3. Parameter verification failed.
9800001 Memory operation failed.
9800002 Parcel operation failed.
9800003 Internal transaction failed.
9800004 System service operation failed.
9900001 Caller information verification failed for a transient task.
9900002 Transient task verification failed.

示例

import { BusinessError } from '@kit.BasicServicesKit';

let id = 1;
backgroundTaskManager.getRemainingDelayTime(id).then((res: number) => {
    console.log('promise => Operation getRemainingDelayTime succeeded. Data: ' + JSON.stringify(res));
}).catch((error: BusinessError) => {
    console.error(`promise => Operation getRemainingDelayTime failed. code is ${error.code} message is ${error.message}`);
})

backgroundTaskManager.cancelSuspendDelay

cancelSuspendDelay(requestId: number): void

取消短时任务。

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

参数

参数名 类型 必填 说明
requestId number 短时任务的请求ID。

错误码

以下错误码的详细介绍请参见通用错误码backgroundTaskManager错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameters types; 3. Parameter verification failed.
9800001 Memory operation failed.
9800002 Parcel operation failed.
9800003 Internal transaction failed.
9800004 System service operation failed.
9900001 Caller information verification failed for a transient task.
9900002 Transient task verification failed.

示例

import { BusinessError } from '@kit.BasicServicesKit';

let id = 1;
try {
  backgroundTaskManager.cancelSuspendDelay(id);
} catch (error) {
  console.error(`cancelSuspendDelay failed. code is ${(error as BusinessError).code} message is ${(error as BusinessError).message}`);
}

backgroundTaskManager.startBackgroundRunning

startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent, callback: AsyncCallback<void>): void

申请长时任务,支持申请一种类型,使用callback异步回调。

需要权限: ohos.permission.KEEP_BACKGROUND_RUNNING

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

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

参数

参数名 类型 必填 说明
context Context 应用运行的上下文。
FA模型的应用Context定义见Context
Stage模型的应用Context定义见Context
bgMode BackgroundMode 长时任务类型。
wantAgent WantAgent 通知参数,用于指定点击长时任务通知后跳转的界面。
callback AsyncCallback<void> 回调函数,申请长时任务成功时,err为undefined,否则为错误对象。

错误码

以下错误码的详细介绍请参见通用错误码backgroundTaskManager错误码

错误码ID 错误信息
201 Permission denied.
202 Not System App.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameters types; 3. Parameter verification failed.
9800001 Memory operation failed.
9800002 Parcel operation failed.
9800003 Internal transaction failed.
9800004 System service operation failed.
9800005 Continuous task verification failed.
9800006 Notification verification failed for a continuous task.
9800007 Continuous task storage failed.

示例

import { backgroundTaskManager } from '@kit.BackgroundTasksKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { wantAgent, WantAgent } from '@kit.AbilityKit';
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';

function callback(error: BusinessError, data: void) {
    if (error) {
        console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
    } else {
        console.info("Operation startBackgroundRunning succeeded");
    }
}

export default class EntryAbility extends UIAbility {
    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
        let wantAgentInfo: wantAgent.WantAgentInfo = {
            // 点击通知后,将要执行的动作列表
            wants: [
                {
                    bundleName: "com.example.myapplication",
                    abilityName: "EntryAbility"
                }
            ],
            // 点击通知后,动作类型
            actionType: wantAgent.OperationType.START_ABILITY,
            // 使用者自定义的一个私有值
            requestCode: 0,
            // 点击通知后,动作执行属性
            wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
        };

        try {
            // 通过wantAgent模块下getWantAgent方法获取WantAgent对象
            wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj: WantAgent) => {
                try {
                    backgroundTaskManager.startBackgroundRunning(this.context,
                        backgroundTaskManager.BackgroundMode.LOCATION, wantAgentObj, callback)
                } catch (error) {
                    console.error(`Operation startBackgroundRunning failed. code is ${(error as BusinessError).code} message is ${(error as BusinessError).message}`);
                }
            });
        } catch (error) {
            console.error(`Operation getWantAgent failed. code is ${(error as BusinessError).code} message is ${(error as BusinessError).message}`);
        }
    }
};

backgroundTaskManager.startBackgroundRunning

startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent): Promise<void>

申请长时任务,支持申请一种类型,使用promise异步回调。

需要权限: ohos.permission.KEEP_BACKGROUND_RUNNING

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

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

参数

参数名 类型 必填 说明
context Context 应用运行的上下文。
FA模型的应用Context定义见Context
Stage模型的应用Context定义见Context
bgMode BackgroundMode 长时任务类型。
wantAgent WantAgent 通知参数,用于指定点击长时任务通知后跳转的界面。

返回值

类型 说明
Promise<void> 无返回结果的Promise对象。

错误码

以下错误码的详细介绍请参见通用错误码backgroundTaskManager错误码

错误码ID 错误信息
201 Permission denied.
202 Not System App.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameters types; 3. Parameter verification failed.
9800001 Memory operation failed.
9800002 Parcel operation failed.
9800003 Internal transaction failed.
9800004 System service operation failed.
9800005 Continuous task verification failed.
9800006 Notification verification failed for a continuous task.
9800007 Continuous task storage failed.

示例

import { backgroundTaskManager } from '@kit.BackgroundTasksKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { wantAgent, WantAgent } from '@kit.AbilityKit';
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';

export default class EntryAbility extends UIAbility {
    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
        let wantAgentInfo: wantAgent.WantAgentInfo = {
            // 点击通知后,将要执行的动作列表
            wants: [
                {
                    bundleName: "com.example.myapplication",
                    abilityName: "EntryAbility"
                }
            ],
            // 点击通知后,动作类型
            actionType: wantAgent.OperationType.START_ABILITY,
            // 使用者自定义的一个私有值
            requestCode: 0,
            // 点击通知后,动作执行属性
            wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
        };

        try {
            // 通过wantAgent模块下getWantAgent方法获取WantAgent对象
            wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj: WantAgent) => {
                try {
                    backgroundTaskManager.startBackgroundRunning(this.context,
                        backgroundTaskManager.BackgroundMode.LOCATION, wantAgentObj).then(() => {
                        console.info("Operation startBackgroundRunning succeeded");
                    }).catch((error: BusinessError) => {
                        console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
                    });
                } catch (error) {
                    console.error(`Operation startBackgroundRunning failed. code is ${(error as BusinessError).code} message is ${(error as BusinessError).message}`);
                }
            });
        } catch (error) {
            console.error(`Operation getWantAgent failed. code is ${(error as BusinessError).code} message is ${(error as BusinessError).message}`);
        }
    }
};

backgroundTaskManager.stopBackgroundRunning

stopBackgroundRunning(context: Context, callback: AsyncCallback<void>): void

取消长时任务,使用callback异步回调。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

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

参数

参数名 类型 必填 说明
context Context 应用运行的上下文。
FA模型的应用Context定义见Context
Stage模型的应用Context定义见Context
callback AsyncCallback<void> 回调函数,取消长时任务成功时,err为undefined,否则为错误对象。

错误码

以下错误码的详细介绍请参见通用错误码backgroundTaskManager错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified.
9800001 Memory operation failed.
9800002 Parcel operation failed.
9800003 Internal transaction failed.
9800004 System service operation failed.
9800005 Continuous task verification failed.
9800006 Notification verification failed for a continuous task.
9800007 Continuous task storage failed.

示例

import { backgroundTaskManager } from '@kit.BackgroundTasksKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';

function callback(error: BusinessError, data: void) {
    if (error) {
        console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
    } else {
        console.info("Operation stopBackgroundRunning succeeded");
    }
}

export default class EntryAbility extends UIAbility {
    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
        try {
            backgroundTaskManager.stopBackgroundRunning(this.context, callback);
        } catch (error) {
            console.error(`Operation stopBackgroundRunning failed. code is ${(error as BusinessError).code} message is ${(error as BusinessError).message}`);
        }
    }
};

backgroundTaskManager.stopBackgroundRunning

stopBackgroundRunning(context: Context): Promise<void>

取消长时任务,使用promise异步回调。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

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

参数

参数名 类型 必填 说明
context Context 应用运行的上下文。
FA模型的应用Context定义见Context
Stage模型的应用Context定义见Context

返回值

类型 说明
Promise<void> 无返回结果的Promise对象。

错误码

以下错误码的详细介绍请参见通用错误码backgroundTaskManager错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified.
9800001 Memory operation failed.
9800002 Parcel operation failed.
9800003 Internal transaction failed.
9800004 System service operation failed.
9800005 Continuous task verification failed.
9800006 Notification verification failed for a continuous task.
9800007 Continuous task storage failed.

示例

import { backgroundTaskManager } from '@kit.BackgroundTasksKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';

export default class EntryAbility extends UIAbility {
    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
        try {
            backgroundTaskManager.stopBackgroundRunning(this.context).then(() => {
                console.info("Operation stopBackgroundRunning succeeded");
            }).catch((error: BusinessError) => {
                console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
            });
        } catch (error) {
            console.error(`Operation stopBackgroundRunning failed. code is ${(error as BusinessError).code} message is ${(error as BusinessError).message}`);
        }
    }
};

backgroundTaskManager.startBackgroundRunning12+

startBackgroundRunning(context: Context, bgModes: string[], wantAgent: WantAgent): Promise<ContinuousTaskNotification>

申请长时任务,支持申请多种类型,使用promise异步回调。

需要权限: ohos.permission.KEEP_BACKGROUND_RUNNING

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

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

参数

参数名 类型 必填 说明
context Context 应用运行的上下文。
bgModes string[] 长时任务类型,取值范围请参考长时任务类型中的配置项
说明: 支持传入一个或多个类型。
wantAgent WantAgent 通知参数,用于指定点击长时任务通知后跳转的界面。

返回值

类型 说明
Promise<ContinuousTaskNotification> 返回ContinuousTaskNotification类型的Promise对象。

错误码

以下错误码的详细介绍请参见通用错误码backgroundTaskManager错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameters types; 3. Parameter verification failed.
9800001 Memory operation failed.
9800002 Parcel operation failed.
9800003 Internal transaction failed.
9800004 System service operation failed.
9800005 Continuous task verification failed.
9800006 Notification verification failed for a continuous task.
9800007 Continuous task storage failed.

示例

import { backgroundTaskManager } from '@kit.BackgroundTasksKit';
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { window } from '@kit.ArkUI';
import { BusinessError } from '@kit.BasicServicesKit';
import { wantAgent, WantAgent } from '@kit.AbilityKit';
import { notificationManager } from '@kit.NotificationKit';

export default class EntryAbility extends UIAbility {
  id: number = 0; // 保存通知id

  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
    let wantAgentInfo: wantAgent.WantAgentInfo = {
      // 点击通知后,将要执行的动作列表
      wants: [
        {
          bundleName: "com.example.myapplication",
          abilityName: "EntryAbility"
        }
      ],
      // 点击通知后,动作类型
      actionType: wantAgent.OperationType.START_ABILITY,
      // 使用者自定义的一个私有值
      requestCode: 0,
      // 点击通知后,动作执行属性
      wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
    };

    try {
      // 通过wantAgent模块下getWantAgent方法获取WantAgent对象
      wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj: WantAgent) => {
        try {
          let list: Array<string> = ["dataTransfer"];
          backgroundTaskManager.startBackgroundRunning(this.context, list, wantAgentObj).then((res: backgroundTaskManager.ContinuousTaskNotification) => {
            console.info("Operation startBackgroundRunning succeeded");
            // 对于上传下载类的长时任务,应用可以使用res中返回的notificationId来更新通知,比如发送带进度条的模板通知。
            this.id = res.notificationId;
          }).catch((error: BusinessError) => {
            console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
          });
        } catch (error) {
          console.error(`Operation startBackgroundRunning failed. code is ${(error as BusinessError).code} message is ${(error as BusinessError).message}`);
        }
      });
    } catch (error) {
      console.error(`Operation getWantAgent failed. code is ${(error as BusinessError).code} message is ${(error as BusinessError).message}`);
    }
  }

  // 应用更新进度
  updateProcess(process: Number) {
    // 应用定义下载类通知模版
    let downLoadTemplate: notificationManager.NotificationTemplate = {
      name: 'downloadTemplate', // 当前只支持downloadTemplate,保持不变
      data: {
        title: '文件下载:music.mp4', // 必填。
        fileName: 'senTemplate', // 必填。
        progressValue: process, // 应用更新进度值,自定义。
      }
    };
    let request: notificationManager.NotificationRequest = {
      content: {
        // 系统实况类型,保持不变
        notificationContentType: notificationManager.ContentType.NOTIFICATION_CONTENT_SYSTEM_LIVE_VIEW,
        systemLiveView: {
          typeCode: 8, // 上传下载类型需要填写 8,当前仅支持此类型。保持不变
          title: "test", // 应用自定义
          text: "test", // 应用自定义
        }
      },
      id: this.id, // 必须是申请长时任务返回的id,否则应用更新通知失败。
      notificationSlotType: notificationManager.SlotType.LIVE_VIEW, // 实况窗类型,保持不变
      template: downLoadTemplate // 应用需要设置的模版名称
    };

    try {
      notificationManager.publish(request).then(() => {
        console.info("publish success, id= " + this.id);
      }).catch((err: BusinessError) => {
        console.error(`publish fail: ${JSON.stringify(err)}`);
      });
    } catch (err) {
      console.error(`publish fail: ${JSON.stringify(err)}`);
    }
  }
};

backgroundTaskManager.updateBackgroundRunning12+

updateBackgroundRunning(context: Context, bgModes: string[]): Promise<ContinuousTaskNotification>

更新长时任务类型,使用promise异步回调。

需要权限: ohos.permission.KEEP_BACKGROUND_RUNNING

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

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

参数

参数名 类型 必填 说明
context Context 应用运行的上下文。
bgModes string[] 更新后的长时任务类型,取值范围请参考长时任务类型中的配置项
说明: 支持传入一个或多个类型。

返回值

类型 说明
Promise<ContinuousTaskNotification> 返回ContinuousTaskNotification类型的Promise对象。

错误码

以下错误码的详细介绍请参见通用错误码backgroundTaskManager错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameters types; 3. Parameter verification failed.
9800001 Memory operation failed.
9800002 Parcel operation failed.
9800003 Internal transaction failed.
9800004 System service operation failed.
9800005 Continuous task verification failed.
9800006 Notification verification failed for a continuous task.
9800007 Continuous task storage failed.

示例

import { backgroundTaskManager } from '@kit.BackgroundTasksKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';

export default class EntryAbility extends UIAbility {
    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
        try {
                try {
                    // 必须先执行startBackgroundRunning,才能调用updateBackgroundRunning。这里假设已经申请过。
                    let list: Array<string> = ["audioPlayback"];
                    backgroundTaskManager.updateBackgroundRunning(this.context, list).then(() => {
                        console.info("Operation updateBackgroundRunning succeeded");
                    }).catch((error: BusinessError) => {
                        console.error(`Operation updateBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
                    });
                } catch (error) {
                    console.error(`Operation startBackgroundRunning failed. code is ${(error as BusinessError).code} message is ${(error as BusinessError).message}`);
                }
        } catch (error) {
            console.error(`Operation getWantAgent failed. code is ${(error as BusinessError).code} message is ${(error as BusinessError).message}`);
        }
    }
};

backgroundTaskManager.on('continuousTaskCancel')15+

on(type: 'continuousTaskCancel', callback: Callback<ContinuousTaskCancelInfo>): void

注册长时任务取消的监听,使用callback异步回调。

需要权限: ohos.permission.KEEP_BACKGROUND_RUNNING

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

参数

参数名 类型 必填 说明
type string 取消长时任务,固定取值为'continuousTaskCancel'。
callback Callback<ContinuousTaskCancelReason> 回调函数,返回长时任务取消原因。

错误码

以下错误码的详细介绍请参见通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error. Possible cause: 1. Callback parameter error; 2. Register a exist callback type; 3. Parameter verification failed.

示例

import { backgroundTaskManager } from '@kit.BackgroundTasksKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';

function callback(info: backgroundTaskManager.ContinuousTaskCancelInfo) {
  console.info('continuousTaskCancel callback id ' + info.id);
  console.info('continuousTaskCancel callback reason ' + info.reason);
}

export default class EntryAbility extends UIAbility {
    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
        try {
            backgroundTaskManager.on("continuousTaskCancel", callback);
        } catch (error) {
            console.error(`Operation onContinuousTaskCancel failed. code is ${(error as BusinessError).code} message is ${(error as BusinessError).message}`);
        }
    }
};

backgroundTaskManager.off('continuousTaskCancel')15+

off(type: 'continuousTaskCancel', callback?: Callback<ContinuousTaskCancelInfo>): void

解除长时任务取消的监听,使用callback异步回调。

需要权限: ohos.permission.KEEP_BACKGROUND_RUNNING

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

参数

参数名 类型 必填 说明
type string 取消长时任务,固定取值为'continuousTaskCancel'。
callback Callback<ContinuousTaskCancelReason> 需要取消监听的回调函数,未传入则取消所有注册回调。

错误码

以下错误码的详细介绍请参见通用错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error. Possible cause: 1. Callback parameter error; 2. Unregister type has not register; 3. Parameter verification failed.

示例

import { backgroundTaskManager } from '@kit.BackgroundTasksKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';

function callback(info: backgroundTaskManager.ContinuousTaskCancelInfo) {
  console.info('continuousTaskCancel callback id ' + info.id);
  console.info('continuousTaskCancel callback reason ' + info.reason);
}

export default class EntryAbility extends UIAbility {
    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
        try {
            backgroundTaskManager.off("continuousTaskCancel", callback);
        } catch (error) {
            console.error(`Operation onContinuousTaskCancel failed. code is ${(error as BusinessError).code} message is ${(error as BusinessError).message}`);
        }
    }
};

DelaySuspendInfo

短时任务信息。

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

名称 类型 必填 说明
requestId number 短时任务的请求ID。
actualDelayTime number 应用实际申请的短时任务时间,单位为毫秒。
说明 :申请时间最长为3分钟,低电量时最长为1分钟。

BackgroundMode

长时任务类型。

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

名称 说明
DATA_TRANSFER 1 数据传输。
AUDIO_PLAYBACK 2 音视频播放。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
AUDIO_RECORDING 3 录制。
LOCATION 4 定位导航。
BLUETOOTH_INTERACTION 5 蓝牙相关业务。
MULTI_DEVICE_CONNECTION 6 多设备互联。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
VOIP13+ 8 音视频通话。
TASK_KEEPING 9 计算任务(仅对2in1设备开放)。

ContinuousTaskNotification12+

长时任务通知信息。

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

名称 类型 只读 可选 说明
slotType notificationManager.SlotType 长时任务通知的渠道类型。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
contentType notificationManager.ContentType 长时任务通知的内容类型。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
notificationId number 长时任务通知 Id。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
continuousTaskId15+ number 长时任务 Id。

ContinuousTaskCancelInfo15+

长时任务取消信息。

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

名称 类型 必填 说明
reason ContinuousTaskCancelReason 长时任务取消原因。
id number 被取消的长时任务 Id。

ContinuousTaskCancelReason15+

长时任务取消原因。

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

名称 说明
USER_CANCEL 1 用户取消。
SYSTEM_CANCEL 2 系统取消。
USER_CANCEL_REMOVE_NOTIFICATION 3 用户移除通知。预留接口,暂未启用。
SYSTEM_CANCEL_DATA_TRANSFER_LOW_SPEED 4 申请DATA_TRANSFER类型长时任务,但是数据传输速率低。预留接口,暂未启用。
SYSTEM_CANCEL_AUDIO_PLAYBACK_NOT_USE_AVSESSION 5 申请AUDIO_PLAYBACK类型长时任务,但是未接入AVSession。预留接口,暂未启用。
SYSTEM_CANCEL_AUDIO_PLAYBACK_NOT_RUNNING 6 申请AUDIO_PLAYBACK类型长时任务,但是未播放音视频。预留接口,暂未启用。
SYSTEM_CANCEL_AUDIO_RECORDING_NOT_RUNNING 7 申请AUDIO_RECORDING类型长时任务,但是未录制。预留接口,暂未启用。
SYSTEM_CANCEL_NOT_USE_LOCATION 8 申请LOCATION类型长时任务,但是未使用定位导航。预留接口,暂未启用。
SYSTEM_CANCEL_NOT_USE_BLUETOOTH 9 申请BLUETOOTH_INTERACTION类型长时任务,但是未使用蓝牙相关业务。预留接口,暂未启用。
SYSTEM_CANCEL_NOT_USE_MULTI_DEVICE 10 申请MULTI_DEVICE_CONNECTION类型长时任务,但是未使用多设备互联。预留接口,暂未启用。
SYSTEM_CANCEL_USE_ILLEGALLY 11 使用非法类型的长时任务,如申请AUDIO_PLAYBACK类型长时任务,但是使用音视频播放及定位导航业务。预留接口,暂未启用。

BackgroundSubMode16+

长时任务子类型。

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

名称 说明
CAR_KEY 1 车钥匙。
说明: 只有申请BLUETOOTH_INTERACTION类型的长时任务,车钥匙子类型才能生效。

BackgroundModeType16+

长时任务类型类别。

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

名称 说明
SUB_MODE 'subMode' 子类型。