当前位置: 首页 > news >正文

【每日学点鸿蒙知识】长时任务、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:若运行长时任务的进程后台负载持续高于所申请类型的典型负载,系统会对应用进行管控。

相关文章:

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

1、HarmonyOS 如何解决语音聊天、通信app退后台系统采集播放回调就会停止&#xff0c;回前台未恢复&#xff1f; 关于应用切到后台系统采集播放回调停止的问题原因如下&#xff1a;为了降低设备耗电速度、保障用户使用流畅度&#xff0c;系统会对退至后台的应用进行管控&#…...

步进电机驱动算法——S形加减速算法原理

1. 前言&#xff1a; 最近项目又用到了步进电机&#xff0c;为了在运动中加减速更加平稳决定研究一下S型加减速&#xff0c;原来用过野火的s型加减速程序&#xff0c;云里雾里的移植成功了&#xff0c;今天再翻来程序看一脸懵逼&#xff0c;重新学习了一下发现所有公式都能看懂…...

【图像去噪】论文复现:大道至简!ZS-N2N的Pytorch源码复现,跑通源码,获得指标计算结果,补充保存去噪结果图像代码,代码实现与论文理论对应!

请先看【专栏介绍文章】:【图像去噪(Image Denoising)】关于【图像去噪】专栏的相关说明,包含适配人群、专栏简介、专栏亮点、阅读方法、定价理由、品质承诺、关于更新、去噪概述、文章目录、资料汇总、问题汇总(更新中) 完整代码和训练好的模型权重文件下载链接见本文底…...

2024年中国新能源汽车用车发展怎么样 PaperGPT(一)

概述 在国家政策的强力扶持下&#xff0c;2024年中国新能源汽车市场迎来了新的发展机遇。本文将基于《中国新能源汽车用车报告&#xff08;2024年&#xff09;》的数据&#xff0c;对新能源汽车的市场发展和用车趋势概述。 新能源汽车市场发展 政策推动&#xff1a;国家和地…...

数据结构-排序思想

直接插入排序 将后面的无序区中的元素挨个向前面的有序区中插入。 1.将顺序表中R[0]用作哨兵&#xff0c;按索引i2...n的次序&#xff0c;将R[i]向有序区R[1...i-1]中执行插入操作。 2.插入操作可采取在有序区中从后向前的查找比较和移动的方法。 3.此操作中比较的次数与原序列…...

python 快速排序(Quick Sort)

快速排序&#xff08;Quick Sort&#xff09; 快速排序是一种高效的排序算法&#xff0c;采用分治法&#xff08;Divide and Conquer&#xff09;策略。它的基本思想是&#xff1a;选择一个基准元素&#xff08;pivot&#xff09;&#xff0c;将数组分为两部分&#xff0c;使得…...

MySQL数据库——常见慢查询优化方式

本文详细介绍MySQL的慢查询相关概念&#xff0c;分析步骤及其优化方案等。 文章目录 什么是慢查询日志&#xff1f;慢查询日志的相关参数如何启用慢查询日志&#xff1f;方式一&#xff1a;修改配置文件方式二&#xff1a;通过命令动态启用 分析慢查询日志方式一&#xff1a;直…...

【AIGC篇】AIGC 引擎:点燃创作自动化的未来之火

&#xff1a;羑悻的小杀马特.-CSDN博客 未来都是惊喜。你生来本应为高山。并非草芥。 引言&#xff1a; 在当今数字化的时代&#xff0c;人工智能生成内容&#xff08;AIGC&#xff09;正以一种前所未有的力量改变着我们的创作领域。它就像一个神秘而强大的魔法师&#xff0c;…...

C语言性能优化:从基础到高级的全面指南

引言 C 语言以其高效、灵活和功能强大而著称&#xff0c;被广泛应用于系统编程、嵌入式开发、游戏开发等领域。然而&#xff0c;要写出高性能的 C 语言代码&#xff0c;需要对 C 语言的特性和底层硬件有深入的了解。本文将详细介绍 C 语言性能优化的背后技术&#xff0c;并通过…...

常用的公共 NTP(网络时间协议)服务器

公共 NTP 服务列表 以下是一些常用的公共 NTP&#xff08;网络时间协议&#xff09;服务器&#xff0c;供您参考&#xff1a; 中国地区公共 NTP 服务器 国家授时中心 NTP 服务器&#xff1a;ntp.ntsc.ac.cn中国 NTP 快速授时服务&#xff1a;cn.ntp.org.cn阿里云公共 NTP 服务…...

Kafka中的Topic和Partition有什么关系?

大家好&#xff0c;我是锋哥。今天分享关于【Kafka中的Topic和Partition有什么关系&#xff1f;】面试题。希望对大家有帮助&#xff1b; Kafka中的Topic和Partition有什么关系&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Apache Kafka 中&#…...

Unity 使用UGUI制作卷轴开启关闭效果

视频效果 代码 using UnityEngine.UI; using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; using DG.Tweening.Core; using DG.Tweening.Plugins.Options;public class JuanZhou : MonoBehaviour {[SerializeField]private …...

MarkDown怎么转pdf;Mark Text怎么使用;

MarkDown怎么转pdf 目录 MarkDown怎么转pdf先用CSDN进行编辑,能双向看版式;标题最后直接导出pdfMark Text怎么使用一、界面介绍二、基本操作三、视图模式四、其他功能先用CSDN进行编辑,能双向看版式; 标题最后直接导出pdf Mark Text怎么使用 Mark Text是一款简洁的开源Mar…...

整合版canal ha搭建--基于1.1.4版本

开启MySql Binlog&#xff08;1&#xff09;修改MySql配置文件&#xff08;2&#xff09;重启MySql服务,查看配置是否生效&#xff08;3&#xff09;配置起效果后&#xff0c;创建canal用户&#xff0c;并赋予权限安装canal-admin&#xff08;1&#xff09;解压 canal.admin-1…...

QGIS移动图元功能

有时需要在QGIS里面移动一些矢量图层&#xff0c;比如图层的地理配准&#xff0c;网上搜了一些资料没有查看&#xff0c;后来仔细找了下&#xff0c;在编辑-编辑几何图形-移动要素里面&#xff0c;可以移动图层。 注意&#xff1a;移动前先要选择上要移动的图层&#xff0c;之…...

【模电刷题复习--填空】

如有错误&#xff0c;欢迎各位大佬在评论区批评指正 模电刷题 一、填空题1.本征半导体中&#xff0c;若掺入微量的__五__价元素&#xff0c;则形成___n___型半导体&#xff0c;其多数载流子是自由电子&#xff0c;若掺入微量的__三__价元素&#xff0c;则形成__p__型半导体。其…...

shardingsphere-jdbc-core-spring-boot-starter的性能问题(理论)

hardingSphere-JDBC-core-spring-boot-starter 是 ShardingSphere 提供的与 Spring Boot 集成的模块&#xff0c;用于实现数据库的分库分表等功能。在性能方面&#xff0c;它既有优势也存在一定的挑战&#xff0c;以下是具体分析&#xff1a; 优势方面 数据分片提升查询性能 通…...

Java Map 集合详解:基础用法、常见实现类与高频面试题解析

在 Java 集合框架中&#xff0c;Map 是用于存储键值对&#xff08;Key-Value&#xff09;的重要接口&#xff0c;广泛应用于开发中的各种场景。本文将详细讲解 Map 的基础概念、常见实现类及其特性&#xff0c;并结合代码示例和高频面试问题&#xff0c;帮助你深入理解 Map 的用…...

一款基于.Net方便、快捷的数据库文档查询、生成工具

项目介绍 SmartSQL 是一款方便、快捷的数据库文档查询、导出工具&#xff01;从最初仅支持SqlServer数据库、CHM文档格式开始&#xff0c;通过不断地探索开发、集思广益和不断改进&#xff0c;又陆续支持Word、Excel、PDF、Html、Xml、Json、MarkDown等文档格式的导出。同时又…...

Linux平台下实现的小程序-进度条

目录 1.换行、回车概念 2.缓冲区 2.1缓冲区 2.2强制刷新 3.进度条程序 Makefile文件 ProgressBar.h ProgressBar.c Main.c 执行结果 1.换行、回车概念 /n&#xff1a;换行回车&#xff08;\r&#xff1a;回车&#xff09; 2.缓冲区 如下图在vim编辑器中的命令模式下…...

Ubuntu 22.04.5 修改IP

Ubuntu22.04.5使用的是netplan管理网络&#xff0c;因此需要在文件夹/etc/netplan下的01-network-manager-all.yaml中修改&#xff0c;需要权限&#xff0c;使用sudo vim或者其他编辑器&#xff0c;修改后的内容如下&#xff1a; # Let NetworkManager manage all devices on …...

解决virtualbox出现开启DHCP之后ubuntu虚拟机之后IP重复的问题

找遍了国内论坛&#xff0c;没一个能解决该问题的&#xff0c;所以我自己写个文章吧&#xff0c;真讨厌那些只会搬运的&#xff0c;污染国内论坛环境&#xff0c;搜一个问题&#xff0c;千篇一律。 问题 操作系统版本为"Ubuntu 24.04 LTS" lennytest1:~$ cat /etc…...

Java开发工具-Jar命令

Java开发工具-Jar 1、jar命令全平台使用 2、jar命令的作用 为类和资源创建存档&#xff0c;并从存档中操作或恢复单个类或资源 3、摘要 jar [OPTION …] [ [–release VERSION] [-C dir] files] … 4、jar命令描述 jar命令通常作为用于压缩与解压的工具&#xff0c;基于ZIP或Z…...

UE5通过蓝图节点控制材质参数

通过蓝图节点控制材质的参数 蓝图节点 在材质上设置标量值 和 在材质上设置向量参数值 Set Scalar Parameter Value on Materials Set Vector Parameter Value on Materials 这两个蓝图节点都可以在蓝图中&#xff0c;控制材质的参数值和向量值...

敖行客年终总结-AT Work 1.0发布

2024年就要过去了&#xff0c;看看敖行客这一年都干了些啥&#xff1f; 敖行客团队通过整整一年的努力&#xff0c;正式推出了AT Work 1.0订阅版&#xff0c;这也标志着AT Work即将正式和C端的小伙伴见面了。 AT Work 是什么&#xff1f; 长期以来&#xff0c;软件研发成本、…...

线程锁和协程锁的区别

转自&#xff1a;chatgpt 1.bthread_mutex_t bthread_mutex_t 是 brpc 框架提供的一种互斥锁&#xff0c;专门为 bthread&#xff08;轻量级线程&#xff09; 设计&#xff0c;具有以下特点&#xff1a; 适用于 bthread 调度模型&#xff1a; bthread_mutex_t 是为 brpc 中的…...

手机租赁平台开发助力智能设备租赁新模式

内容概要 手机租赁平台开发&#xff0c;简单说就是让你用得起高大上的智能设备&#xff0c;不管是最新款的手机、平板&#xff0c;还是那些炫酷的智能耳机&#xff0c;这个平台应有尽有。想要体验但又不希望花大钱&#xff1f;那你就找对地方了&#xff01;通过灵活的租赁方案…...

掌握大数据处理利器:Flink 知识点全面总结【上】

1.Flink的特点 Apache Flink 是一个框架和分布式处理引擎&#xff0c;用于对无界和有界数据流进行状态计算。 Flink主要特点如下&#xff1a; 高吞吐和低延迟。每秒处理数百万个事件&#xff0c;毫秒级延迟。结果的准确性。Flink提供了事件时间(event--time)和处理时间(proces…...

人工智能知识分享第四天-线性回归

线性回归 线性回归介绍 线性回归概念 线性回归(Linear regression)是利用 回归方程(函数) 对 一个或多个自变量(特征值)和因变量(目标值)之间 关系进行建模的一种分析方式。 注意事项&#xff1a; 1 为什么叫线性模型&#xff1f;因为求解的w&#xff0c;都是w的零次幂&am…...

Appium 2.0:移动自动化测试的革新之旅

关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理&#xff0c;构建成功的基石 在自动化测试工作之前&#xff0c;你应该知道的10条建议 在自动化测试中&#xff0c;重要的不是工具 在移动应用开发的领域中&#xff0c;Appium 作为一款强大的自动化测试工具&#xf…...