【每日学点鸿蒙知识】长时任务、HarmonyAppProvision申请、preferences、Testing工具、应用保活

1、HarmonyOS 如何解决语音聊天、通信app退后台系统采集播放回调就会停止,回前台未恢复?

关于应用切到后台系统采集播放回调停止的问题原因如下:为了降低设备耗电速度、保障用户使用流畅度,系统会对退至后台的应用进行管控,包括进程挂起(即系统不再为应用进程分配CPU资源,同时对应的公共事件等不再发给应用进程)和进程终止。

建议采用 后台任务开发服务 中的 长时任务,在页面的 onPageHide生命周期中申请长时任务,并在onPageShow取消长时任务,可以采用 backgroundTaskManager.startBackgroundRunning 接口来申请长时任务。

  • 可以参考指南中的demo,建议参考Stage模型的demo,相关开发说明及注意事项也在其中,链接如下:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/continuous-task-V5
  • 申请任务相关的API文档,链接如下:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-resourceschedule-backgroundtaskmanager-V5

Stage模型中示例代码:

  1. 需要申请ohos.permission.KEEP_BACKGROUND_RUNNING权限,配置方式请参见声明权限
  2. 声明后台模式类型。在module.json5配置文件中为需要使用长时任务的UIAbility声明相应的长时任务类型(配置文件中填写长时任务类型的配置项)。
 "module": {"abilities": [{"backgroundModes": [// 长时任务类型的配置项"audioRecording"], }],...}
  1. 导入模块。长时任务相关的模块为@ohos.resourceschedule.backgroundTaskManager@ohos.app.ability.wantAgent,其余模块按实际需要导入。
 import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';import UIAbility from '@ohos.app.ability.UIAbility';import window from '@ohos.window';import AbilityConstant from '@ohos.app.ability.AbilityConstant';import Want from '@ohos.app.ability.Want';import rpc from '@ohos.rpc';import { BusinessError } from '@ohos.base';import wantAgent, { WantAgent } from '@ohos.app.ability.wantAgent';
  1. 申请和取消长时任务。
    • 在Stage模型中,长时任务支持设备本应用申请,持跨设备或跨应用的申请仅对系统应用开放。设备本应用申请长时任务示例代码如下:
 @Entry@Componentstruct Index {@State message: string = 'ContinuousTask';// 通过getContext方法,来获取page所在的UIAbility上下文。private context: Context = getContext(this);startContinuousTask() {let wantAgentInfo: wantAgent.WantAgentInfo = {// 点击通知后,将要执行的动作列表// 添加需要被拉起应用的bundleName和abilityNamewants: [{bundleName: "com.example.myapplication",abilityName: "com.example.myapplication.MainAbility"}],// 指定点击通知栏消息后的动作是拉起abilityactionType: wantAgent.OperationType.START_ABILITY,// 使用者自定义的一个私有值requestCode: 0,// 点击通知后,动作执行属性wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]};// 通过wantAgent模块下getWantAgent方法获取WantAgent对象wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj: WantAgent) => {backgroundTaskManager.startBackgroundRunning(this.context,backgroundTaskManager.BackgroundMode.AUDIO_RECORDING, wantAgentObj).then(() => {console.info(`Succeeded in operationing startBackgroundRunning.`);}).catch((err: BusinessError) => {console.error(`Failed to operation startBackgroundRunning. Code is ${err.code}, message is ${err.message}`);});});}stopContinuousTask() {backgroundTaskManager.stopBackgroundRunning(this.context).then(() => {console.info(`Succeeded in operationing stopBackgroundRunning.`);}).catch((err: BusinessError) => {console.error(`Failed to operation stopBackgroundRunning. Code is ${err.code}, message is ${err.message}`);});}build() {Row() {Column() {Text("Index").fontSize(50).fontWeight(FontWeight.Bold)Button() {Text('申请长时任务').fontSize(25).fontWeight(FontWeight.Bold)}.type(ButtonType.Capsule).margin({ top: 10 }).backgroundColor('#0D9FFB').width(250).height(40).onClick(() => {// 通过按钮申请长时任务this.startContinuousTask();// 此处执行具体的长时任务逻辑,如放音等。})Button() {Text('取消长时任务').fontSize(25).fontWeight(FontWeight.Bold)}.type(ButtonType.Capsule).margin({ top: 10 }).backgroundColor('#0D9FFB').width(250).height(40).onClick(() => {// 此处结束具体的长时任务的执行// 通过按钮取消长时任务this.stopContinuousTask();})}.width('100%')}.height('100%')}}    

2、HarmonyOS HarmonyAppProvision信息申请后依然无权限?

  • 关于申请受限ACL权限步骤可以参考以下文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-signing-0000001587684945#section157591551175916
  • 当前部分权限支持通过自动签名快速申请:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-signing-V5#section9786111152213
  • 应用权限列表中标记ACL使能为true的权限可通过应用市场(AGC)申请:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/permissions-for-all-V5

3、HarmonyOS preferences存储的数据大于最大长度之后,建议使用什么来存储呢?

可使用键值型数据库----单版本数据库,针对每条记录,Key的长度≤1 KB,Value的长度<4 MB。
参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/data-persistence-by-kv-store-V5

4、使用Deveco Testing工具时,如何在进行APP性能测试的同时检测APPCPU和GPU的功耗状态?

目前可以通过“性能功耗测试/场景化性能测试”检测

5、HarmonyOS 关于应用保活问题?

  1. 申请后台任务 一个app只需要申请一个吗?比如app在某几个页面时,app后台,需要后台任务保活,使用一个就可以?还是说每个都需要单独申请呢?
  2. 还有就是后台保活的api是哪个?

解答:

  1. 同一时刻可以申请一个或者多个类型的长时任务,存在多类型业务时,只需要申请主业务类型长时任务。只要主申请的任务存在,应用就不会被冻结
  2. 后台长时任务,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/continuous-task-V5

长时任务申请约束与限制

  • 申请限制:Stage模型中,长时任务仅支持UIAbility申请;FA模型中,长时任务仅支持ServiceAbility申请。
  • 数量限制:一个UIAbility(FA模型则为ServiceAbility)同一时刻仅支持申请一个长时任务,即在一个长时任务结束后才可能继续申请。如果一个应用同时需要申请多个长时任务,需要创建多个UIAbility;一个应用的一个UIAbility申请长时任务后,整个应用下的所有进程均不会被挂起。
  • 运行限制:在手机产品上,系统会进行长时任务校验。
    场景1:若应用申请了长时任务,但未真正执行申请类型的长时任务或申请类型的任务已结束,系统会对应用进行管控。例如系统检测到应用申请了AUDIO_PLAYBACK(音视频播放),但实际未播放音乐,长时任务会被取消。
    场景2:若应用没有申请对应的长时任务类型,但执行了相关类型的长时任务,系统会对应用进行管控。例如系统检测到应用只申请了AUDIO_PLAYBACK(音视频播放),但实际上除了播放音乐(对应AUDIO_PLAYBACK类型),还在进行录制(对应AUDIO_RECORDING类型),系统会对应用进行管控。
    场景3:若运行长时任务的进程后台负载持续高于所申请类型的典型负载,系统会对应用进行管控。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/891321.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式之访问者模式:一楼千面 各有玄机

~犬&#x1f4f0;余~ “我欲贱而贵&#xff0c;愚而智&#xff0c;贫而富&#xff0c;可乎&#xff1f; 曰&#xff1a;其唯学乎” 一、访问者模式概述 \quad 江湖中有一个传说&#xff1a;在遥远的东方&#xff0c;有一座神秘的玉楼。每当武林中人来访&#xff0c;楼中的各个房…

从0到机器视觉工程师(二):封装调用静态库和动态库

目录 静态库 编写静态库 使用静态库 方案一 方案二 动态库 编写动态库 使用动态库 方案一 方案二 方案三 总结 静态库 静态库是在编译时将库的代码合并到最终可执行程序中的库。静态库的优势是在编译时将所有代码包含在程序中&#xff0c;可以使程序独立运行&…

VisualStudio 2019 升级遇到的问题及解决

事件起因 今天计划想研究下.net core&#xff08;后面版本直接称为 .net &#xff09;,发现 .net sdk 5.0 最新版本安装不成功。解决之后&#xff0c;真是手欠&#xff0c;看着Visual Studio 2019 有更新了&#xff0c;就直接点击了&#xff0c;这时才发现问题大了。。。 安装…

Spring Boot教程之四十一:在 Spring Boot 中调用或使用外部 API

如何在 Spring Boot 中调用或使用外部 API&#xff1f; Spring Boot 建立在 Spring 之上&#xff0c;包含 Spring 的所有功能。它现在越来越受到开发人员的青睐&#xff0c;因为它是一个快速的生产就绪环境&#xff0c;使开发人员能够直接专注于逻辑&#xff0c;而不必费力配置…

HTML5实现好看的新年春节元旦网站源码

HTML5实现好看的新年春节元旦网站源码 前言一、设计来源1.1 主界面1.2 新年由来界面1.3 文章详细界面1.4 登录界面1.5 注册界面1.6 新年图册界面1.7 联系我们界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的新年春节元旦网站源码&#xff0c;春节新…

Python学习(5):数据结构

1 列表 1.1 列表方法 列表数据类型支持很多方法&#xff0c;列表对象的所有方法所示如下&#xff1a; list.append(x)&#xff1a;在列表末尾添加一项。 类似于 a[len(a):] [x]。list.extend(iterable)&#xff1a;通过添加来自 iterable 的所有项来扩展列表。 类似于 a[len…

2021.12.28基于UDP同信的相关流程

作业 1、将TCP的CS模型再敲一遍 服务器 #include <myhead.h> #define PORT 8888 #define IP "192.168.124.123" int main(int argc, const char *argv[]) {//创建套接字//绑定本机IP和端口号//监听客户端请求//接收客户端连接请求//收发消息//创建套接字int…

2024年RAG:回顾与展望

2024年&#xff0c;RAG&#xff08;Retrieval-Augmented Generation&#xff09;技术经历了从狂热到理性的蜕变&#xff0c;成为大模型应用领域不可忽视的关键力量。年初&#xff0c;AI的“无所不能”让市场充满乐观情绪&#xff0c;RAG被视为解决复杂问题的万能钥匙&#xff1…

Python 爬虫

一、创建项目 1.双击打开pycharm&#xff0c;点击新建项目 2.项目设置- 勾选[继承全局站点软件包]- 勾选[可用于所有项目]- 取消勾选[创建main.py欢迎脚本]- 点击创建 3.项目名称右键--新建--python文件 4.输入文件名--回车二、编辑代码 # 导入请求模块 import requests # 如…

idea项目导入gitee 码云

1、安装gitee插件 IDEA 码云插件已由 gitosc 更名为 gitee。 1 在码云平台帮助文档http://git.mydoc.io/?t153739上介绍的很清楚&#xff0c;推荐前两种方法&#xff0c; 搜索码云插件的时候记得名字是gitee&#xff0c;gitosc已经搜不到了。 2、使用码云托管项目 如果之…

基于JAVA+SpringBoot+Vue的机动车号牌管理系统

基于JAVASpringBootVue的机动车号牌管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f345; …

活动预告 |【Part1】Microsoft Azure 在线技术公开课:基础知识

课程介绍 参加“Azure 在线技术公开课&#xff1a;基础知识”活动&#xff0c;培养有助于创造新的技术可能性的技能并探索基础云概念。参加我们举办的本次免费培训活动&#xff0c;扩充自身的云模型和云服务类型知识。你还可以查看以计算、网络和存储为核心的 Azure 服务。 活…

郑州时空-TMS运输管理系统 GetDataBase 信息泄露漏洞复现

0x01 产品简介 郑州时空-TMS运输管理系统是一款专为物流运输企业设计的综合性管理软件,旨在提高运输效率、降低运输成本,并实现供应链的协同运作。系统基于现代计算机技术和物流管理方法,结合了郑州时空公司的专业经验和技术优势,为物流运输企业提供了一套高效、智能的运输…

BUUCTF Pwn ciscn_2019_es_2 WP

1.下载 checksec 用IDA32打开 定位main函数 发现了个假的后门函数&#xff1a; 看看vul函数&#xff1a; 使用read读取 想到栈溢出 但是只有48个 只能覆盖EBP和返回地址 长度不够构造 所以使用栈迁移&#xff1a; 栈迁移需要用到leave ret 使用ROPgadget找地址&#xff1a; …

07-ArcGIS For JavaScript--隐藏参数qualitySettings(memory和lod控制)

目录 1、综述2、sceneview.qualitySettings2.1、sceneview.qualitySettings.memoryLimit2.2、lodFactor2.3 additionalCacheMemory 3、结论 1、综述 先上重点&#xff0c;SceneView.qualitySettings为隐藏对象参数&#xff0c;该对象的memoryLimit和lodFactor等值&#xff0c;…

【SQL Server】教材数据库(1)

1 利用sql建立教材数据库&#xff0c;并定义以下基本表&#xff1a; 学生&#xff08;学号&#xff0c;年龄&#xff0c;性别&#xff0c;系名&#xff09; 教材&#xff08;编号&#xff0c;书名&#xff0c;出版社编号&#xff0c;价格&#xff09; 订购&#xff08;学号…

RP2040 C SDK I2C外设使用

RP2040 C SDK I2C外设使用 &#x1f4cc;相关篇《RP2040 VSCode C/C开发环境快速部署》&#x1f4cd;I2C API 外设&#xff1a;https://www.raspberrypi.com/documentation/pico-sdk/hardware.html#group_hardware_i2c&#x1f527;驱动I2C ssd1306 屏幕需要使用到的库&#xf…

模仿微信小程序wx.showModal自定义弹窗,内容可以修改

实现以下弹框样式功能 1.在components新建一个文件showModel.wpy作为组件&#xff0c;复制下面代码 <style lang"less" scoped> .bg_model {display: flex;justify-content: center;align-items: center;// 弹框背景.bg_hui {width: 100%;height: 100%;posi…

WebP Vs. PNG:哪种图像格式适合您的网站?

图像对任何网站都至关重要,可以增强视觉吸引力和用户体验。但是,图像也会显着影响网站的加载时间,因此必须针对 Web 使用对其进行优化。一种方法是使用正确的图像格式。

mysql乱码、mysql数据中文问号

网上排出此错误方法的很多&#xff0c;但是 都不简洁&#xff0c;找不到根本原因 主要排查两点&#xff1a; 1.代码中jdbc链接的编码规则 urljdbc:mysql://localhost:3306/title?useUnicodetrue&amp;characterEncodingutf8 将characterEncoding设置为utf8 2.设置mysq…