HarmonyOS 鸿蒙Next List中富文本卡顿
HarmonyOS 鸿蒙Next List中富文本卡顿 List中,如何使用html标签的文本,直接使用富文本RichText会卡顿。
原因是因为RichText组件比较消耗内存资源,而且有一些重复使用RichText组件的场景下,比如在List下循环重复使用RichText时,会出现卡顿、滑动响应慢等现象。
推荐使用web组件加载html资源。
嵌套list时可能遇到的问题,可以参考Web组件嵌套滚动
这里提供一个list嵌套web的demo供参考:
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct SxxActiveDetailPage {
@State articleUrl: string[] = [];
controller: web_webview.WebviewController = new web_webview.WebviewController();
private scroller: Scroller = new Scroller();
@State urls: string[] = ["<a href='https://www.xxx' target='_blank'>https://www.xxx</a>", "<a href='https://www.xxx' target='_blank'>https://www.xxx</a>"]
build() {
Column() {
Column() {
List({ scroller: this.scroller }) {
ForEach(this.urls, (item: string) => {
ListItem() {
Web({ src: item, controller: this.controller, renderMode: RenderMode.SYNC_RENDER })
.fileAccess(true)
.domStorageAccess(true)
.javaScriptAccess(true)
.imageAccess(true)//是否允许自动加载图片资源,默认允许。
.zoomAccess(true)
.databaseAccess(false)//设置是否开启数据库存储API权限
.verticalScrollBarAccess(false)
.layoutMode(WebLayoutMode.FIT_CONTENT)
}.width('100%')
}, (item: string) => JSON.stringify(item))
}
.backgroundColor(Color.White)
.alignListItem(ListItemAlign.Start)
}
.alignItems(HorizontalAlign.Center)
.justifyContent(FlexAlign.Start)
.width('100%')
.height('100%')
}
}
}
以上是初步分析结论,如有疑问可以展开回复,看到后会继续协助定位阻碍点。
开源网站上收录了UI、系统接口、Web、创新特性等场景化鸿蒙示例DEMO,开发中可以参考:https://gitee.com/scenario-samples/demo-index
更多关于HarmonyOS 鸿蒙Next List中富文本卡顿的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
RichText组件文档中已经声明:RichText组件比较消耗内存资源,在List下循环重复使用RichText时,会出现卡顿、滑动响应慢等现象。
推荐使用RichEditor组件,RichEditor支持加载普通的富文本,该组件支持属性字符串格式,不支持html格式的字符串。
需要渲染html文件,推荐用web组件,使用本地html文件,渲染返回的数据
可将web组件内嵌在list组件实现,参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-webview-V13
链接中有完整的示例代码,可以参考实现
关于web和list嵌套滑动问题可参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/web-nested-scrolling-V13
web组件全量展开,需要设置renderMode:RenderMode.SYNC_RENDER。 文档:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkweb/ts-basic-components-web.md#%E6%8E%A5%E5%8F%A3
示例代码中web组件参考如下:
Web({ src: $rawfile('index.html'), controller: this.controller, renderMode: RenderMode.SYNC_RENDER })
.width(CommonConstants.WIDTH_OR_HEIGHT)
.layoutMode(WebLayoutMode.FIT_CONTENT)
针对HarmonyOS(鸿蒙)Next List中富文本卡顿的问题,这通常可能由多种因素引起,包括但不限于渲染性能、内存管理、UI线程阻塞等。以下是一些可能的解决方案方向,专注于鸿蒙系统本身而非编程语言层面:
-
优化富文本渲染:检查富文本的渲染逻辑,确保没有不必要的复杂计算或重复渲染。利用鸿蒙提供的UI组件优化特性,如异步加载、分页加载等,减少单次渲染的负担。
-
内存管理:确保应用内存使用高效,避免内存泄漏。鸿蒙系统对内存管理有严格的要求,合理管理内存可以显著提升性能。
-
UI线程处理:确保所有UI更新都在主线程进行,同时避免在主线程执行耗时操作。使用鸿蒙提供的异步任务机制,将耗时操作移至后台线程。
-
资源优化:对于富文本中的图片、视频等资源,进行适当压缩和优化,减少加载时间和渲染压力。
-
系统更新:确保鸿蒙系统为最新版本,华为不断对系统进行优化,新版本可能已修复了相关性能问题。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html 。