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

本文主要是介绍鸿蒙开发接口资源调度:【@ohos.backgroundTaskManager (后台任务管理)】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 后台任务管理

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

当应用或业务模块处于后台(无可见界面)时,如果有需要继续执行或者后续执行的业务,可基于业务类型,申请短时任务延迟挂起(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<void>): DelaySuspendInfo

后台应用申请延迟挂起。

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

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

参数

参数名类型必填说明
reasonstring延迟挂起申请的原因。
callbackCallback<void>延迟即将超时的回调函数,一般在超时前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<number>): void

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

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

参数

参数名类型必填说明
requestIdnumber延迟挂起的请求ID。
callbackAsyncCallback<number>指定的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<number>

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

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

参数

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

返回值

类型说明
Promise<number>指定的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>): void

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

需要权限:  ohos.permission.KEEP_BACKGROUND_RUNNING

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

参数

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

示例

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<void>

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

需要权限:  ohos.permission.KEEP_BACKGROUND_RUNNING

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

参数

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

返回值

类型说明
Promise<void>使用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>): void

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

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

参数

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

示例

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<void>

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

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

参数

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

返回值

类型说明
Promise<void>使用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

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

鸿蒙Next核心技术分享

1、鸿蒙基础知识←《鸿蒙NEXT星河版开发学习文档》

2、鸿蒙ArkUI←《鸿蒙NEXT星河版开发学习文档》

3、鸿蒙进阶技术←《鸿蒙NEXT星河版开发学习文档》

 4、鸿蒙就业高级技能←《鸿蒙NEXT星河版开发学习文档》 

 5、鸿蒙多媒体技术←《鸿蒙NEXT星河版开发学习文档》 

6、鸿蒙南向驱动开发←《鸿蒙NEXT星河版开发学习文档》  

7、鸿蒙南向内核设备开发←《鸿蒙NEXT星河版开发学习文档》  

 8、鸿蒙系统裁剪与移植←《鸿蒙NEXT星河版开发学习文档》  

这篇关于鸿蒙开发接口资源调度:【@ohos.backgroundTaskManager (后台任务管理)】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1028383

相关文章

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

用Microsoft.Extensions.Hosting 管理WPF项目.

首先引入必要的包: <ItemGroup><PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" /><PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" /><PackageReference Include="Serilog

关于如何更好管理好数据库的一点思考

本文尝试从数据库设计理论、ER图简介、性能优化、避免过度设计及权限管理方面进行思考阐述。 一、数据库范式 以下通过详细的示例说明数据库范式的概念,将逐步规范化一个例子,逐级说明每个范式的要求和变换过程。 示例:学生课程登记系统 初始表格如下: 学生ID学生姓名课程ID课程名称教师教师办公室1张三101数学王老师101室2李四102英语李老师102室3王五101数学王老师101室4赵六103物理陈

加载资源文件失败

背景         自己以前装了一个海康的深度学习算法平台,试用期是一个月,过了一个月之后,因为没有有效注册码或者加密狗的支持了导致无法使用,于是打算卸载掉,在卸载一个软件的时候,无论是使用控制面板还是软件自带的卸载功能,总是卸载不掉,提示“加载资源文件失败”。该软体主要包括以下两部分: 用自带卸载功能卸载的时候分别提示如下:     用控制面板卸载的时候反应很慢,最后也是提示这个

Eclipse+ADT与Android Studio开发的区别

下文的EA指Eclipse+ADT,AS就是指Android Studio。 就编写界面布局来说AS可以边开发边预览(所见即所得,以及多个屏幕预览),这个优势比较大。AS运行时占的内存比EA的要小。AS创建项目时要创建gradle项目框架,so,创建项目时AS比较慢。android studio基于gradle构建项目,你无法同时集中管理和维护多个项目的源码,而eclipse ADT可以同时打开

springboot家政服务管理平台 LW +PPT+源码+讲解

3系统的可行性研究及需求分析 3.1可行性研究 3.1.1技术可行性分析 经过大学四年的学习,已经掌握了JAVA、Mysql数据库等方面的编程技巧和方法,对于这些技术该有的软硬件配置也是齐全的,能够满足开发的需要。 本家政服务管理平台采用的是Mysql作为数据库,可以绝对地保证用户数据的安全;可以与Mysql数据库进行无缝连接。 所以,家政服务管理平台在技术上是可以实施的。 3.1

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

vue3项目将所有访问后端springboot的接口统一管理带跨域

vue3项目将所有访问后端springboot的接口统一管理带跨域 一、前言1.安装Axios2.创建Axios实例3.创建API服务文件4.在组件中使用API服务 二、跨域三、总结 一、前言 在Vue 3项目中,统一管理所有访问后端Spring Boot接口的最佳实践是创建一个专门的API服务层。这可以让你的代码更加模块化、可维护和集中管理。你可以使用Axios库作为HTT

WDF驱动开发-WDF总线枚举(一)

支持在总线驱动程序中进行 PnP 和电源管理 某些设备永久插入系统,而其他设备可以在系统运行时插入和拔出电源。 总线驱动 必须识别并报告连接到其总线的设备,并且他们必须发现并报告系统中设备的到达和离开情况。 总线驱动程序标识和报告的设备称为总线的 子设备。 标识和报告子设备的过程称为 总线枚举。 在总线枚举期间,总线驱动程序会为其子 设备创建设备对象 。  总线驱动程序本质上是同时处理总线枚

JavaWeb系列六: 动态WEB开发核心(Servlet) 上

韩老师学生 官网文档为什么会出现Servlet什么是ServletServlet在JavaWeb项目位置Servlet基本使用Servlet开发方式说明快速入门- 手动开发 servlet浏览器请求Servlet UML分析Servlet生命周期GET和POST请求分发处理通过继承HttpServlet开发ServletIDEA配置ServletServlet注意事项和细节 Servlet注