HarmonyOS中如何优化图片缓存以降低内存占用?

HarmonyOS中如何优化图片缓存以降低内存占用?

阅读 892
2 个回答

在 HarmonyOS 中,可以使用app.setImageRawDataCacheSize方法来设置解码前图片数据内存缓存上限,从而优化图片缓存以降低内存占用。例如在由@Entry标记的页面,onPageShowaboutToAppear里面设置生效,如以下代码所示:

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
      }
    }
  }
}
  1. 压缩图片:在加载图片前,根据显示需求对图片进行压缩,减少内存占用。
  2. 使用缓存策略:采用LRU(最近最少使用)算法管理图片缓存,自动淘汰长时间未被使用的图片。
  3. 设置缓存大小:通过app.setImageRawDataCacheSize方法设置图片数据内存缓存的上限。
  4. 使用ImageKnife库:这是一个为HarmonyOS设计的图像加载缓存库,支持内存和磁盘缓存,以及图片变换效果。
  5. 及时释放资源:确保不再需要的图片资源被及时释放,避免内存泄漏。
  6. 避免不必要的图片加载:仅在用户即将看到图片时才加载,减少不必要的内存占用。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题