在 HarmonyOS 中,可以使用app.setImageRawDataCacheSize方法来设置解码前图片数据内存缓存上限,从而优化图片缓存以降低内存占用。例如在由@Entry标记的页面,onPageShow或aboutToAppear里面设置生效,如以下代码所示:import app, { AppResponse } from '@system.app' @Entry @Component struct Page3 { //app.setImageRawDataCacheSize方法需要在由@Entry标记的页面,onPageShow或aboutToAppear里面设置才生效 onPageShow() { // 设置解码前图片数据内存缓存上限为 100MB (100MB=100*1024*1024B=104857600B) app.setImageRawDataCacheSize(104857600) console.info('Application onPageShow') } onDestroy() { console.info('Application onDestroy') } @State alt:Resource =$r('app.media.foreground') build() { Row() { Column() { Image($r('')) .onError(()=>{ console.log('demoTest') this.alt = $r('app.media.icon') }) .alt(this.alt) .width(100) .height } } } }
压缩图片:在加载图片前,根据显示需求对图片进行压缩,减少内存占用。使用缓存策略:采用LRU(最近最少使用)算法管理图片缓存,自动淘汰长时间未被使用的图片。设置缓存大小:通过app.setImageRawDataCacheSize方法设置图片数据内存缓存的上限。使用ImageKnife库:这是一个为HarmonyOS设计的图像加载缓存库,支持内存和磁盘缓存,以及图片变换效果。及时释放资源:确保不再需要的图片资源被及时释放,避免内存泄漏。避免不必要的图片加载:仅在用户即将看到图片时才加载,减少不必要的内存占用。
在 HarmonyOS 中,可以使用
app.setImageRawDataCacheSize
方法来设置解码前图片数据内存缓存上限,从而优化图片缓存以降低内存占用。例如在由@Entry
标记的页面,onPageShow
或aboutToAppear
里面设置生效,如以下代码所示: