【每日学点鸿蒙知识】屏幕高度、证书签名、深色模式对上架影响、Taskpool上下文、List触底加载更多

news/2025/1/1 21:44:45/
1、HarmonyOS 关于屏幕高度?

display.getDefaultDisplaySync 可以获取到整个屏幕的高度, 那顶部的状态栏和底部的安全区高度 怎么获取?

可以在EntryAbility里获取并存储,获取到的高度是px,所以用px2vp()转换为vp使用:

onWindowStageCreate(windowStage: window.WindowStage) {// Main window is created, set main page for this abilityhilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');windowStage.loadContent('pages/Index', (err, data) => {if (err.code) {hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');return;}hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');let windowClass = windowStage.getMainWindowSync();let statusHeight = windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM).topRect.height;let bottomHeight = windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR).bottomRect.height;AppStorage.setOrCreate('bottomHeight',px2vp(bottomHeight));AppStorage.setOrCreate('statusHeight',px2vp(statusHeight));});
}

在需要的界面使用 AppStorage.get(‘bottomHeight’),AppStorage.get(‘statusHeight’) 获取。

2、HarmonyOS 使用发布证书进行手动签名配置,不能运行安装应用到工程机上?

使用发布证书配置了手动签名,.cer和.p7b文件都是从AppGallery Connect上下载下来的。但是在DevEco Studio上点击运行,不能在工程机上安装。提示错误如下:安装HAP时提示“code:9568322 error: signature verification failed due to not trusted app source”。

使用发布证书进行手动签名安装hap包,同样要配置注册调试设备吗? 但是AppGallery Connect发布证书选项没有配置注册调试设备的地方。

该问题是由于签名中未包含该调试设备的UDID,请通过如下步骤进行解决。

  1. 使用自动签名。在连接设备后,重新为应用进行签名。具体步骤为:进入File > Project Structure > Project > Signing Configs界面,勾选“Automatically generate signature”(如果是API 8和9工程,需同时勾选“SupportHarmonyOS”),即可完成签名。如果未登录,请先单击Sign In进行登录,然后自动完成签名。
  2. 如果使用的是手动签名,请在AppGallery Connect中先将该调试设备注册调试设备并在申请Profile文件选择设备时添加该调试设备,重新申请Profile证书。发布证书签名的包是不能在本地进行调试安装
3、HarmonyOS APP未适配深色模式是否影响最终版本上架?
  1. APP未适配深色模式是否影响版本上架?
  2. 深色模式适配是否必须同时适配 手机、平板、2in1(pc)设备三端?

可以主动设置浅色模式,应用默认配置为跟随系统切换深浅色模式,如不希望应用跟随系统深浅色模式变化,可主动设置应用的深浅色风格。设置后,应用的深浅色模式固定,不会随系统改变。参考地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-light-dark-color-adaptation-V5#section19361879317
设置为浅色模式代码:getContext(this).getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT);

4、HarmonyOS 如何在taskPool中的@Concurrent方法中获取应用Context上下文?

在taskPool中的@Concurrent方法中直接调用getContext()会抛出异常,需要在taskPool中使用preference存储和relationalStore数据库;如何在taskPool中的@Concurrent方法安全的获取当前应该的ApplicationContext对象

@Concurrent允许使用local变量、入参和通过import引入的变量。禁止使用闭包变量。看下@Concurrent使用方法是否有误

5、HarmonyOS List 组件有触底加载更多的属性或方法吗?

可使用onReachEnd事件实现数据懒加载,在onReachEnd事件触发时,回调函数中异步获取指定条数的列表数据,每次列表滑动到底部获取下一页数据。
可参考如下官方文档:

  • 长列表加载性能优化:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/bpta-best-practices-long-list#section69931513103314

LazyForEach懒加载的原理和渲染过程如下:

  1. LazyForEach会根据屏幕可视区能够容纳显示的组件数量按需加载数据。
  2. 根据加载的数据量创建组件,挂载在组件树上,构建出一棵短小的组件树。即,屏幕可以展示多少列表项组件,就按需创建多少个ListItem组件节点挂载在List组件树根节点上。
  3. 屏幕可视区只展示部分组件。当可视区外的组件需要在屏幕内显示时,需要从头完成数据加载、组件创建、挂载组件树这一过程,直至渲染到屏幕上。

其数据加载、组件树挂载、页面渲染的示意图如下所示:
sh

LazyForEach实现了按需加载,针对列表数据量大、列表组件复杂的场景,减少了页面首次启动时一次性加载数据的时间消耗,减少了内存峰值。不过在长列表滑动的过程中,因为需要根据用户的滑动行为不断地加载新的内容,这需要进行额外的数据请求和处理,会增加滑动时的计算量,从而对性能产生一定的影响。然而,合理使用LazyForEach的按需加载能力,通过在滑动停止或达到某个阈值时才进行加载,可以减少不必要的计算和请求,从而提高性能,给用户带来更好的体验。总之,在实现按需加载的场景中,需要综合考虑性能和用户体验的平衡,合理地优化加载逻辑和渲染方式,以提升整体的性能表现。

  • LazyForEach:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-rendering-control-lazyforeach-V5

LazyForEach从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。当在滚动容器中使用了LazyForEach,框架会根据滚动容器可视区域按需创建组件,当组件滑出可视区域外时,框架会进行组件销毁回收以降低内存占用。


http://www.ppmy.cn/news/1559234.html

相关文章

ip归属地怎么判定?如何查看自己ip属地

在当今数字化时代,IP地址作为互联网通信的基础,扮演着至关重要的角色。而IP归属地的判定与查看,不仅关乎网络安全、隐私保护,还直接影响到社交平台的信任机制与信息传播的真实性。本文将深入探讨IP归属地的判定原理以及如何查看自…

JAVA开发初级入门之-如何快速将Java开发环境搭建,优雅草央千澈快速IDEA与JDK安装配置环境教程一文让你搞定-java开发必修课之一

JAVA开发初级入门之-如何快速将Java开发环境搭建,优雅草央千澈快速IDEA与JDK安装配置环境教程一文让你搞定-java开发必修课之一 软件准备 idea(IntelliJ IDEA) 知识扩展: IntelliJ IDEA 是由 JetBrains 开发的一款广泛使用的集成开…

论文浅尝 | 编辑基于语言模型的知识图谱嵌入(AAAI2024)

笔记整理:曲晏林,天津大学硕士,研究方向为大语言模型 论文链接:https://arxiv.org/abs/2301.10405 发表会议:AAAI 2024 1. 动机 知识图谱(Knowledge Group, KG)由三元组(头部实体、关系、尾部实体)组成,广泛…

Day56 图论part06

108.冗余连接 并查集应用类题目,关键是如何把题意转化成并查集问题 代码随想录 import java.util.Scanner;public class Main{public static void main (String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();DisJoint disjoint = new DisJo…

【漫话机器学习系列】021.类别特征(Categorical Feature)

类别特征(Categorical Feature) 类别特征(Categorical Feature)是指取值为有限的、不连续的类别或标签的数据特征。在机器学习和数据分析中,类别特征经常用于描述对象的分类属性,例如颜色、性别、职业等。…

表的增删改查(MySQL)

1. 表的增删改查 CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除) 1.1 Create 语法: INSERT [INTO] table_name [(column [, column] ...)] VALUES (value_list) [, (value_list)] ...value_list:…

深度学习笔记1:神经网络与模型训练过程

参考博客:PyTorch深度学习实战(1)——神经网络与模型训练过程详解_pytorch 实战-CSDN博客 人工神经网络 ANN:张量及数学运算的集合,排列方式近似于松散的人脑神经元排列 组成 1)输入层 2)隐…

敏捷测试文化的转变

敏捷文化是敏捷测试转型的基础,只有具备敏捷文化的氛围,对组织架构、流程和相关测试实践的调整才能起作用。在前面的敏捷测试定义中,敏捷测试是遵从敏捷软件开发原则的一种测试实践,这意味着敏捷的价值观。 此外,从传…