【每日学点鸿蒙知识】调试、网络、缓存、富文本编辑等

1、如何使用发布证书进行调试?

由于部分功能需要校验证书信息,所以需要使用调试证书和发布证书分别进行调试,但是使用发布证书后出现安装错误05/14 19:04:39: Install Failed: error: failed to install bundle.code:9568322error: signature verification failed due to not trusted app source.View detailed instructions.$ hdc shell rm -rf data/local/tmp/c07053e4cafe4f06bbbfecc3c2a697bbError while Deploy Hap。

规格问题;应用市场发布的发布证书,无法通过非应用市场渠道安装

如需要测试发布证书应用,可以考虑使用AGC->开放式测试

2、获取网络能力netBearType文档中定义为数组类型,是否是当前规格?

netBearType参数当wifi、蜂窝网络同时连接即双开场景下只会返回wifi的状态信息,使用时可能涉及多次调用情况定义为当前规格。

3、RichEditor上面有个Component,现在希望RichEditor和Component成为一个整体,能够自适应光标位置进行滚动,该如何实现?

RichEditor上面有个Component,现在希望RichEditor和Component成为一个整体,能够自适应光标位置进行滚动,应该如何实现,目前用Scroller无法获取RichEditor中光标的具体坐标(光标基于RichEditor的x和y位置),无法实现滚动。

用Scroll将RichEditor和Component包裹,通过onAreaChange的回调,调用scroller.scrollBy的能力,以此来改变滚动组件的高度。

参考代码:

复制代码
@Entry
@Component
struct Index {
  editorController = new RichEditorController()
  scroller: Scroller = new Scroller()

  build() {
    Column() {
      Scroll(this.scroller) {
        Column() {
          Image($r('app.media.startIcon'))
            .width('100%')
            .height(200)
            .margin({ bottom: 20 })
          RichEditor({ controller: this.editorController })
            .id('RichEditor')
            .width('100%')
            .backgroundColor(Color.Yellow)
            .onReady(() => {
              this.editorController.addImageSpan($r("app.media.startIcon"),
                {
                  imageStyle:
                  {
                    size: ["100px", "100px"]
                  }
                })
              this.editorController.addTextSpan('男生女生向前冲',
                {
                  style:
                  {
                    fontColor: Color.Blue,
                    fontSize: 30
                  }
                })
            })
            .onAreaChange((_, value) => {
              if (_.height !== value.height) {
                this.scroller.scrollBy(0, Number(value.height) - 200)
                console.log('---_.height', _.height)
                console.log('---value.height', value.height)
              }
            })
          Button('getSpans-文字').onClick((event: ClickEvent) => {
            let getSpans = this.editorController.getSpans({ start: 0 })
            console.log('getSpans0' + JSON.stringify(getSpans[0]))
            // 必须进行强转才能获取文字信息或者图片信息
            let span0 = getSpans[0] as RichEditorTextSpanResult
            console.log('文字相关的信息: ' + JSON.stringify(span0))
          })
          Button('getSpans-图片').onClick((event: ClickEvent) => {
            let getSpans = this.editorController.getSpans({ start: 0 })
            console.log('getSpans1' + JSON.stringify(getSpans[1]))
            let span1 = getSpans[1] as RichEditorImageSpanResult
            console.log('图片相关的信息: ' + JSON.stringify(span1))
          })
          Button('RichEditor获焦').onClick(() => {
            focusControl.requestFocus('RichEditor')
          })
        }
      }
      .scrollable(ScrollDirection.Vertical) // 滚动方向纵向
      .scrollBar(BarState.On) // 滚动条常驻显示
      .scrollBarColor(Color.Gray) // 滚动条颜色
    }
  }
}

4、LocalStorage和APPStorage保存复杂对象会产生性能问题的原因?

关于LocalStorage和APPStorage保存复杂对象性能问题的两点疑问:

  1. 频繁读写:频繁读写复杂对象时,为什么会导致页面的性能变差,是LocalStorage会影响页面的渲染吗?
  2. 数据结构:LocalStorage和APPStorage会把数据保存到本地吗?应该在内存里边吧,为什么会有序列化和反序列化的过程?

LocalStorage的读写操作是同步的,即当读取或写入LocalStorage时,程序会阻塞等待操作完成才会继续执行后续代码,所以不推荐整改修改复杂对象,这个new创建的时长是会影响刷新效率的;

LocalStorage和APPStorage在本地读取复杂对象时,不会进行序列化。

5、无网络环境下使用同步方法获取网络状态报错?

无网环境调用同步方法请求无法解析拿到nethandle对应内容,方法内部执行到getCap时产生报错,可采用try-catch方式获取报错信息:

复制代码
try {
  let netHandle = connection.getDefaultNetSync();
  let connectionproperties = connection.getConnectionPropertiesSync(netHandle);
} catch(err) {
  console.info('error: ' + JSON.stringify(err));
}
相关推荐
Lanren的编程日记5 分钟前
Flutter 鸿蒙应用AR功能集成实战:多平台AR框架+模拟模式,打造增强现实体验
flutter·ar·harmonyos
南村群童欺我老无力.31 分钟前
鸿蒙PC开发的Slider组件blockSize参数的类型要求
华为·harmonyos
希望永不加班36 分钟前
SpringBoot 多级缓存(本地缓存 + Redis)
java·spring boot·redis·后端·缓存
C雨后彩虹38 分钟前
文件目录大小
java·数据结构·算法·华为·面试
后端漫漫1 小时前
Redis 原子能力与并发控制
数据库·redis·缓存
南梦浅1 小时前
Redis部署-总结版
数据库·redis·缓存
前端技术1 小时前
华为余承东:鸿蒙终端设备数突破5500万
java·前端·javascript·人工智能·python·华为·harmonyos
代码论斤卖1 小时前
OpenHarmony的watchdog service频繁崩溃问题分析
linux·harmonyos
Lanren的编程日记2 小时前
Flutter 鸿蒙应用权限管理功能实战:标准化权限申请与状态管控,提升用户信任度
flutter·华为·harmonyos
想你依然心痛2 小时前
HarmonyOS 6(API 23)实战:基于 HDS 沉浸光感与悬浮导航打造“光影工作台“多窗口协作系统
microsoft·华为·harmonyos·悬浮导航·沉浸光感