【每日学点鸿蒙知识】多线程限制、axios组件下载进度问题、lpx问题、Web组件全局代理、ArrayList问题

73 阅读2分钟

1、HarmonyOS 多线程写法限制?

目前基于HarmonyOS taskpool、worker的多线程开发,对于数据对象的限制较多。而我们实际开发过程中,基于私有协议的业务请求收发包数据结构非常复杂,想在taskpool基础上做数据处理的异步化比较困难。

推荐napi_load_module_with_info:gitee.com/openharmony…

blog.csdn.net/maniuT/arti…

2、HarmonyOS axios组件,下载过程中没有执行onDownloadProgress的日志?

download一定要加上filePath 和 context参数设置filePath才会进入上传下载流程,否则就是普通请求,拿不到下载进度。不会自动清理。responseType设置arrayBuffer的话,也需要设置filepath

3、HarmonyOS lpx问题

应用使用lpx单位,A组件在手机上是占满屏幕,但在平板上时,由于平板过宽,在A组件左边会有一个导航栏,A组件只占2/3,但是由于A页面使用lpx单位,导致A页面的图标字体过大(lpx根据屏幕宽度换算),需要怎么解决。

根据组件宽度和屏幕宽度的比值换算下,组件宽度请参考链接: developer.huawei.com/consumer/cn…

4、HarmonyOS ArkTS Web组件如何设置全局代理?

web组件load页面展示,页面及所有资源需要走隧道代理才能正确显示,翻阅API未查到相关方法,如何设置全局代理。

connection.setAppHttpProxy方法设置全局网络代理。参考链接:developer.huawei.com/consumer/cn…

5、HarmonyOS ArrayList 遇到问题?

Error message:The forEach method cannot be bound, 调用的对象是ArrayList

export class LUBCUAAgreementInfo {
  id?: number
  type?: string
}

export class LUBCUAUnifyAuthSceneInfoResult {
  id?: number
  sceneCode?: string
  agreementInfoDTOS?: ArrayList<LUBCUAAgreementInfo>
}

调用代码

@Component
export struct LUBCUALoginView {
  @Prop agreementData?: LUBCUAUnifyAuthSceneInfoResult

  aboutToAppear(): void {
    this.agreementData?.agreementInfoDTOS?.forEach((value: LUBCUAAgreementInfo, index: number) => {

    })
  }
}

ArrayList是jsapi中的一个类。数组是基础数据结构。两者从本质来说不是同一个类型。将ArrayList换成Array就不会报错了。@Prop中建议使用Array,其中允许使用的类型可以参考:developer.huawei.com/consumer/cn…