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

【每日学点鸿蒙知识】关于热修复、图片预览、多个@State刷新性能问题等

1、是否推荐使用bm quickfix制造修复包?

官方文档文档中显示:快速修复补丁安装bm quickfix -a -f /data/app/有两个问题:

  1. hqf文件如何制作的文档没有找到。
  2. hqf 是不是新版本和旧版本的差分包咨询场景描述:app可以在运行过程中修复部分bug功能,是不是可以用上吗的bm quickfix命令来修复,是否有相关的参考文档?

当前不推荐手动制作HQF包,推荐使用热重载能力:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-hot-reload-0000001527628941-V5?catalogVersion=V5

2、如何实现图片预览?

如何实现点击图片放大并支持收拾缩放?

@Entry
@Component
struct Index {
  @State visible: Visibility = Visibility.None
  @State scaleValue: number = 1
  @State pinchValue: number = 1
  @State pinchX: number = 0
  @State pinchY: number = 0
  @State count: number = 0
  @State offsetX: number = 0
  @State offsetY: number = 0
  @State positionX: number = 0
  @State positionY: number = 0

  build() {
    Stack() {
      Row() {
        Column() {
          Image($r('app.media.icon'))
            .width(100)
            .height(100)
            .onClick(() => {
              console.log("hit me!")
              if (this.visible == Visibility.Visible) {
                this.visible = Visibility.None
              } else {
                this.visible = Visibility.Visible
              }
            })
        }
        .width('100%')
        .justifyContent(FlexAlign.Center)
        .alignItems(HorizontalAlign.Center)
      }
      .height('100%')


      Text('')
        .onClick(() => {
          if (this.visible == Visibility.Visible) {
            this.visible = Visibility.None
          } else {
            this.visible = Visibility.Visible
          }
        })
        .width('100%')
        .height('100%')// 透明度可以自己调节一下
        .opacity(0.16)
        .backgroundColor(0x000000)
        .visibility(this.visible)

      Column() {
        Image($r('app.media.icon'))
          .width(300)
          .height(300)
          .draggable(false)
          .visibility(this.visible)
          .scale({ x: this.scaleValue, y: this.scaleValue, z: 1 })
          .translate({ x: this.offsetX, y: this.offsetY, z: 0 })
          .gesture(
            GestureGroup(GestureMode.Parallel,
              PinchGesture({ fingers: 2 })
                .onActionStart((event?: GestureEvent) => {
                  console.info('Pinch start')
                })
                .onActionUpdate((event?: GestureEvent) => {
                  if (event) {
                    this.scaleValue = this.pinchValue * event.scale
                    this.pinchX = event.pinchCenterX
                    this.pinchY = event.pinchCenterY
                  }
                })
                .onActionEnd(() => {
                  this.pinchValue = this.scaleValue
                  console.info('Pinch end')
                }),

              PanGesture()
                .onActionUpdate((event?: GestureEvent) => {
                  if (event) {
                    this.offsetX = this.positionX + event.offsetX
                    this.offsetY = this.positionY + event.offsetY
                  }
                  console.info('pan update')
                })
                .onActionEnd(() => {
                  this.positionX = this.offsetX
                  this.positionY = this.offsetY
                  console.info('pan end')
                })
            )
          )
      }
    }
  }
}

3、connection模块中netlost和netUnavailable的作用?

  • netlost事件为网络状态丢失的监听,如:wifi / 移动网络断开时。
  • netUnavailable事件监听为网络连接成功但是发生异常无法正常访问浏览器的场景。

4、安装报错 错误码code: 9568347 error: install parse native so failed.如何处理?

参考官方文档排查:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/bm-tool-V5#%E5%AE%89%E8%A3%85hap%E6%97%B6%E6%8F%90%E7%A4%BAcode9568347-error-install-parse-native-so-failed%E9%94%99%E8%AF%AF

5、一个自定义组件内某一时机批量刷新多个@State修饰的状态变量,是否会影响性能?

比如一个自定义的Component,有20个@State修饰的变量,每个State都定义了相关更新接口,外部某个时机,会批量更新这些State,调用每个State的更新接口,会不会导致频繁更新Component组件,导致性能问题?

同时对多个State接口更新不会导致性能问题,因为每个@State都要有去更新UI的能力,一次性批量的修改不会导致一个组件被反复刷多次,在一个Vsync内,对同一个组件的多次标脏只刷新一次。


http://www.kler.cn/a/472341.html

相关文章:

  • PHP进阶-在Ubuntu上搭建LAMP环境教程
  • [python3]Excel解析库-xlwt
  • STM32-笔记34-4G遥控灯
  • 使用 Conda创建新的环境遇到的问题
  • 随机置矩阵列为0[矩阵乘法pytorch版]
  • 搭建企业AI助理的创新应用与案例分析
  • 【网络安全技术与应用】(选修)实验2 用Wireshark分析典型TCP/IP体系中的协议
  • Web前端ui框架
  • LLM 训练中存储哪些矩阵:权重矩阵,梯度矩阵,优化器状态
  • javaCV音频剪切
  • 我的AI工具箱Tauri版-ZoomImageFlux图像缩放
  • 【网络安全 | 漏洞挖掘】HubSpot 全账户接管(万字详析)
  • Linux 安装 Mosquitto 及 SpringBoot 整合
  • 用JAVA编写一个简单的小游戏
  • pdf在页面中预览的方法
  • 数据标注「orc」
  • 路由组件与一般组件的区别
  • UDP_TCP
  • 应急指挥与调度子模块示例
  • 解密Navicat密码(Java)
  • 基于Centos 7系统的安全加固方案
  • 理解PDF文档的力量:使用LLM与RAG的本地应用
  • 大语言模型提示技巧(五)-推断
  • 引领实时数据分析新时代:阿里云实时数仓 Hologres
  • Netron可视化深度学习的模型框架,大大降低了大模型的学习门槛
  • 使用ElasticSearch查询