DEV Community

SameX
SameX

Posted on

鸿蒙Next之数据同步艺术之二:深入理解标准化数据类型 (UTD)

本文旨在深入探讨华为鸿蒙HarmonyOS Next系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。

UTD 的设计原则

  • 层级结构: UTD 采用层级结构进行类型分类,方便开发者理解和使用。例如,图片类型可以归属于图像类型,图像类型可以归属于媒体类型。
  • 物理与逻辑分类: UTD 将数据类型分为物理和逻辑两类,方便开发者从不同维度描述数据类型。例如,图片类型既可以是一个图像对象,也可以是一个文件。
  • 预置与自定义: UTD 提供了预置数据类型,例如图片、视频、音频等,方便开发者快速使用。同时,开发者也可以自定义数据类型,满足个性化需求。 #### UTD 的优势
  • 类型模糊问题: UTD 解决了 HarmonyOS 系统中类型模糊问题,例如不同应用对同一类型数据的描述方式不一致。
  • 跨应用兼容性: UTD 提高了不同应用之间的兼容性,使得应用可以更容易地共享和交换数据。
  • 开发效率: UTD 减少了开发者对数据类型定义和解析的工作量,提高了开发效率。 #### UTD 的使用
  • 查询 UTD 信息: 开发者可以使用 ArkData 提供的接口查询 UTD 信息,例如根据文件扩展名查询 UTD 类型,或者根据 MIME 类型查询 UTD 类型。
  • 创建 UTD 对象: 开发者可以使用 ArkData 提供的接口创建 UTD 对象,例如创建图片 UTD 对象、视频 UTD 对象等。
  • UTD 对象属性: UTD 对象包含了一系列属性,例如 uniformDataTypefilenameExtensionsmimeTypes 等,开发者可以根据需要进行访问和修改。 示例代码
// 查询文件类型
let fileType = uniformTypeDescriptor.getUniformDataTypeByFilenameExtension('.jpg');
console.log(fileType.typeId); // 输出:general.image
// 创建图片 UTD 对象
let imageUTD = new uniformTypeDescriptor.ImageUTD({
  uniformDataType: 'general.image',
  filenameExtensions: ['.jpg', '.png', '.gif'],
  mimeTypes: ['image/jpeg', 'image/png', 'image/gif'],
});
// 获取图片 UTD 对象属性
console.log(imageUTD.filenameExtensions); // 输出:['.jpg', '.png', '.gif']
console.log(imageUTD.mimeTypes); // 输出:['image/jpeg', 'image/png', 'image/gif']
Enter fullscreen mode Exit fullscreen mode

深入理解标准化数据结构

标准化数据结构的优势

  • 数据格式统一: 标准化数据结构定义了数据内容的统一格式,方便不同应用之间的数据交换和共享。
  • 数据解析简化: 标准化数据结构简化了数据解析的复杂性,使得开发者可以更容易地处理数据。
  • 开发效率提升: 标准化数据结构减少了开发者对数据格式定义和解析的工作量,提高了开发效率。 #### 标准化数据结构的使用
  • 创建标准化数据结构: 开发者可以使用 ArkData 提供的接口创建标准化数据结构,例如创建图片数据结构、视频数据结构等。
  • 标准化数据结构属性: 标准化数据结构包含了一系列属性,例如图片的宽高、分辨率、URL 等,开发者可以根据需要进行访问和修改。
  • 标准化数据结构应用: 标准化数据结构可以应用于各种场景,例如文件预览、文件分享、拖拽等。 示例代码
// 创建图片数据结构
let imageStruct = new uniformDataStruct.ImageStruct({
  uniformDataType: 'general.image',
  width: 1920,
  height: 1080,
  url: 'https://www.example.com/image.jpg',
});
// 获取图片数据结构属性
console.log(imageStruct.width); // 输出:1920
console.log(imageStruct.height); // 输出:1080
console.log(imageStruct.url); // 输出:https://www.example.com/image.jpg
Enter fullscreen mode Exit fullscreen mode

总结

UDMF 是华为鸿蒙HarmonyOS Next 中的一个强大的数据管理框架,它通过标准化数据类型和标准化数据结构,实现了不同应用、不同设备之间数据交互的统一和规范。我们可以利用 UDMF 模块轻松地实现跨应用、跨设备的数据交互,并构建安全可靠的应用。

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

While many AI coding tools operate as simple command-response systems, Qodo Gen 1.0 represents the next generation: autonomous, multi-step problem-solving agents that work alongside you.

Read full post →

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay