0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙开发接口资源调度:【@ohos.backgroundTaskManager (后台任务管理)】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-06-04 16:43 次阅读

后台任务管理

本模块提供后台任务管理能力。

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

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

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

icon-note.gif说明: 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 开发前请熟悉鸿蒙开发指导文档 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

导入模块

import backgroundTaskManager from '@ohos.backgroundTaskManager';

backgroundTaskManager.requestSuspendDelay

requestSuspendDelay(reason: string, callback: Callback): DelaySuspendInfo

后台应用申请延迟挂起。

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

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

参数

参数名类型必填说明
reasonstring延迟挂起申请的原因。
callbackCallback延迟即将超时的回调函数,一般在超时前6秒通过此回调通知应用。

返回值

类型说明
[DelaySuspendInfo]返回延迟挂起信息

示例

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

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

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

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

参数

参数名类型必填说明
requestIdnumber延迟挂起的请求ID。
callbackAsyncCallback指定的callback回调方法。用于返回应用程序进入挂起状态之前的剩余时间,以毫秒为单位。

示例

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

getRemainingDelayTime(requestId: number): Promise

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

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

参数

参数名类型必填说明
requestIdnumber延迟挂起的请求ID。

返回值

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

示例

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

cancelSuspendDelay(requestId: number): void

取消延迟挂起。

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

参数

参数名类型必填说明
requestIdnumber延迟挂起的请求ID。

示例

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

backgroundTaskManager.startBackgroundRunning8+

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

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

需要权限: ohos.permission.KEEP_BACKGROUND_RUNNING

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

参数

参数名类型必填说明
context[Context]应用运行的上下文。
bgMode[BackgroundMode]向系统申请的后台模式。
wantAgent[WantAgent]通知参数,用于指定长时任务通知点击后跳转的界面。
callbackAsyncCallbackcallback形式返回启动长时任务的结果。

示例

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.startBackgroundRunning8+

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

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

需要权限: ohos.permission.KEEP_BACKGROUND_RUNNING

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

参数

参数名类型必填说明
context[Context]应用运行的上下文。
bgMode[BackgroundMode]向系统申请的后台模式。
wantAgent[WantAgent]通知参数,用于指定长时任务通知点击跳转的界面。

返回值

类型说明
Promise使用Promise形式返回结果。

示例

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.stopBackgroundRunning8+

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

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

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

参数

参数名类型必填说明
context[Context]应用运行的上下文。
callbackAsyncCallbackcallback形式返回启动长时任务的结果。

示例

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.stopBackgroundRunning8+

stopBackgroundRunning(context: Context): Promise

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

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

参数

参数名类型必填说明
context[Context]应用运行的上下文。

返回值

类型说明
Promise使用Promise形式返回结果。

示例

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

延迟挂起信息。

系统能力: 以下各项对应的系统能力均为SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask

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

BackgroundMode8+

系统能力: 以下各项对应的系统能力均为SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask

搜狗高速浏览器截图20240326151450.png

参数名参数值描述HarmonyOSOpenHarmony鸿蒙文档籽料:mau123789是v直接拿
DATA_TRANSFER1数据传输
AUDIO_PLAYBACK2音频播放
AUDIO_RECORDING3录音
LOCATION4定位导航
BLUETOOTH_INTERACTION5蓝牙相关
MULTI_DEVICE_CONNECTION6多设备互联
WIFI_INTERACTION7WLAN相关 系统API :此接口为系统接口,三方应用不支持调用。
VOIP8音视频通话 系统API :此接口为系统接口,三方应用不支持调用。
TASK_KEEPING9计算任务(仅在特定设备生效)

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    8582

    浏览量

    151071
  • 鸿蒙
    +关注

    关注

    57

    文章

    2347

    浏览量

    42827
收藏 人收藏

    评论

    相关推荐

    鸿蒙开发接口资源管理:【@ohos.resourceManager (资源管理)】

    资源管理模块,根据当前configuration(语言,区域,横竖屏,mccmnc)和device capability(设备类型,分辨率)提供获取应用资源信息读取接口
    的头像 发表于 06-03 15:10 1124次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>接口</b><b class='flag-5'>资源管理</b>:【@<b class='flag-5'>ohos</b>.resourceManager (<b class='flag-5'>资源管理</b>)】

    鸿蒙开发接口资源调度:【@ohos.workScheduler (延迟任务调度)】

    开发者在开发应用时,通过调用延迟任务注册接口,注册对实时性要求不高的延迟任务,该任务默认由系统安
    的头像 发表于 06-04 10:01 915次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>接口</b><b class='flag-5'>资源</b><b class='flag-5'>调度</b>:【@<b class='flag-5'>ohos</b>.workScheduler (延迟<b class='flag-5'>任务</b><b class='flag-5'>调度</b>)】

    鸿蒙原生应用/元服务开发-短时任务

    短时任务。同时,系统提供获取对应短时任务剩余时间的查询接口,用以查询本次短时任务剩余时间,以确认是否继续运行其他业务。 ·配额计算:仅当应用在后台
    发表于 12-28 16:13

    鸿蒙原生应用/元服务开发-长时任务

    音乐,系统则会终止对应的进程。 接口说明:主要接口:代码开发:stage模型下 1.申请ohos.permission.KEEP_BACKGROUND_RUNNING权限,配置方式请参
    发表于 01-09 10:52

    鸿蒙原生应用/元服务开发-延迟任务说明(一)

    ) @ohos.backgroundTaskManager (后台任务管理) @ohos.multimedia.audio (音频管理) @
    发表于 01-16 14:57

    labview后台任务的例程

    哪位高手有labview后台任务的例程????
    发表于 11-07 19:51

    怎样通过定时器去控制后台任务

    通过定时器控制后台任务,每5ms执行切换一个任务,根据事件类型可以区分不同类型的任务,对于外界按键类的操作响应,只有当前任务会做出响应,除当前任务
    发表于 01-07 07:27

    请问鸿蒙智能穿戴设备如何保持后台任务定时获取网络数据?

    ;ohos.permission.SET_WIFI_INFO"},{ "name": "ohos.permission.GET_WIFI_INFO"}]无法满足业务业务要求:应用退后台后,间隔
    发表于 04-25 10:19

    请问鸿蒙智能穿戴设备怎样保持后台任务定时获取网络数据?

    ”:“ohos.permission.SET_WIFI_INFO”},{“名称”:“ohos.permission.GET_WIFI_INFO”}]无法满足业务业务要求:应用退后台后,间隔30秒获取一次网络数据
    发表于 05-16 14:53

    HarmonyOS后台任务管理开发指南上线!

    的 HarmonyOS 后台任务管理开发指南上新内容,希望能够帮助开发者更高效地探索、体验、上手 HarmonyOS。 同时,我们十分重视开发
    发表于 11-29 09:58

    记录仪实时多任务调度策略的研究

    的。应用程序运行在该管理器程序之上。后台根据各个任务的要求,进行资源管理、消息管理任务
    发表于 12-01 04:00 326次阅读
     记录仪实时多<b class='flag-5'>任务</b><b class='flag-5'>调度</b>策略的研究

    LabVIEW教程之后台任务的详细资料说明

    有一些任务在运行的时候,并不需要与用户交互。它们通常在不打扰用户其它工作的时候默默的执行。这样的任务后台任务。与之对比,前台任务就是用户看得见的。
    发表于 05-07 16:42 5次下载
    LabVIEW教程之<b class='flag-5'>后台任务</b>的详细资料说明

    HarmonyOS后台任务管理开发指南上线!

    为什么要使用后台任务开发过程中如何选择合适的后台任务后台任务申请时存在哪些约束与限制? 针对开发者使用
    的头像 发表于 11-28 21:10 730次阅读
    HarmonyOS<b class='flag-5'>后台任务</b><b class='flag-5'>管理</b><b class='flag-5'>开发</b>指南上线!

    怎么在CentOS中后台运行、关闭和查看后台任务

    怎么在CentOS中后台运行、关闭和查看后台任务
    的头像 发表于 12-18 17:34 3660次阅读

    鸿蒙OS 分布式任务调度

    鸿蒙OS 分布式任务调度概述 在 HarmonyO S中,分布式任务调度平台对搭载 HarmonyOS 的多设备构筑的“超级虚拟终端”提供统
    的头像 发表于 01-29 16:50 493次阅读