首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 25-04-24 16:06
  • 3656
  • 10279
blog.csdn.net
1、HarmonyOS 关于屏幕高度?

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

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

onWindowStageCreate(windowStage: window.WindowStage) {
  // Main window is created, set main page for this ability
  hilog.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));
  });
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

在需要的界面使用 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,框架会根据滚动容器可视区域按需创建组件,当组件滑出可视区域外时,框架会进行组件销毁回收以降低内存占用。

注:本文转载自blog.csdn.net的轻口味的文章"https://blog.csdn.net/sjw890821sjw/article/details/144770191"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

135
HarmonyOS
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top