HarmonyOS鸿蒙Next中memory://协议是什么

HarmonyOS鸿蒙Next中memory://协议是什么 cke_271.png

  有关于这个协议的相关文档或者文章吗

文档检索只有这个地方有相关简短说明

如何在卡片中刷新展示网络图片-行业常见问题-公共关键技术方案-场景化知识 - 华为HarmonyOS开发者


更多关于HarmonyOS鸿蒙Next中memory://协议是什么的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

这里的memory://,类似于 HTML 中,<img>标签src属性支持的自定义协议(如 myproto://app:// 等),运行环境能拦截并解析该协议,返回图片资源(二进制 / Base64 / 可访问 URL)等。

由于卡片环境的限制,无法直接使用网络图片URL(http协议),需要先将网络图片下载到本地沙箱。

系统应该是内置了memory://协议,通过入参(memory://fileName)中的(memory://)标识来进行远端内存图片显示,其中fileName需要和EntryFormAbility传递对象(‘formImages’: {key: fd})中的key相对应。

更多关于HarmonyOS鸿蒙Next中memory://协议是什么的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


memory://协议是HarmonyOS鸿蒙Next中用于访问应用沙箱内私有内存文件系统的URI方案。它允许应用通过标准文件操作接口读写自身内存中的临时数据,路径指向应用隔离的沙箱目录,数据不持久化存储,应用退出后自动清理。该协议主要用于应用内部临时文件处理,不涉及跨应用或持久化存储场景。

memory:// 是 HarmonyOS Next 中 ArkUI 框架(特别是声明式范式)用于在应用内部传递和管理图像内存数据的一种非网络、进程内私有协议

它的核心作用与工作原理如下:

  1. 本质:它是一个伪协议方案标识符。其后的路径(如 memory://account/123)并非指向磁盘上的真实文件,而是一个在应用运行时内存中注册的、用于查找图像数据块的

  2. 设计目的:主要用于高效、安全地在应用内不同的 UI 组件或模块间传递已解码的、位图格式的图像数据,避免不必要的重复解码、文件读写或网络请求。

  3. 典型工作流程

    • 数据注册:当你的应用通过某种方式(如网络下载、本地解码、图形绘制等)获得一个 PixelMapImageData 对象后,可以调用相关的 ArkUI API(例如 ImageCache 相关接口)将此图像数据对象注册到框架管理的一块内存区域中,并关联一个唯一的 memory:// URI。
    • 数据使用:在需要显示该图像的 UI 组件(如 Image 组件)的 src 属性中,直接使用这个注册好的 memory:// URI。
    • 框架处理:ArkUI 框架在解析到 srcmemory:// 协议时,会从其内部内存缓存中根据 URI 路径(键)快速查找并取出对应的图像数据进行渲染,而无需经过文件系统或网络栈。
  4. 优点

    • 高性能:内存直接访问,速度极快。
    • 资源复用:同一份内存数据可被多个组件引用。
    • 场景契合:特别适合需要频繁更新、动态生成的图像内容,如相机预览帧处理、图像编辑中间结果、实时图表绘制等。
  5. 重要限制

    • 进程内有效memory:// URI 仅在创建它的应用进程生命周期内有效,不能用于进程间通信。
    • 非持久化:数据仅存在于内存,应用退出或内存回收后即失效,不能替代文件存储。
    • 私有协议:通常由框架或应用自身管理,其具体路径格式和注册/获取的 API 属于 ArkUI 框架的实现细节。

关于文档: 您找到的链接是当前官方文档中对此协议为数不多的直接提及。这通常意味着 memory:// 协议是框架内部使用或高级特性的一部分,其公开 API 可能封装在更高层级的接口(如 ImageCacheImageData 或特定的图形处理模块)中。建议重点关注 ArkUI 图形图像处理PixelMapImageCache 相关的开发指南和 API 文档,来查找如何创建和操作可用于 memory:// 协议引用的图像数据对象。直接搜索 memory:// 的公开文档可能较少。

回到顶部