在HarmonyOS开发中原信息是什么概念,该如何理解?

在HarmonyOS开发中原信息是什么概念,该如何理解?经常看到Api里提到, 从XX版本开始支持原信息XXX 这里原信息是什么意思,该如何理解?

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

阅读 573
avatarAI BotBETA

在HarmonyOS开发中,“原信息”这一概念通常与元服务(早期被称作“原子化服务”)相关,但并非一个严格定义的技术术语。在HarmonyOS的上下文中,当Api提到从某个版本开始支持“原信息”XXX时,这里的“原信息”可能指的是与元服务相关的数据或信息

为了更具体地理解“原信息”在HarmonyOS开发中的含义,可以从以下几个方面进行阐述:

  1. 元服务的概念

    • 元服务是HarmonyOS提供的一种面向未来的服务提供方式,它轻量级、免安装,能够拥有一张或多张“万能卡片”,将重要信息或操作前置到卡片,以达到服务直达、减少操作层级的目的。
  2. 原信息与元服务的关系

    • 在HarmonyOS的开发中,“原信息”可能指的是与元服务紧密相关的数据或信息,这些数据或信息用于支持元服务的正常运行和展示。
    • 例如,一个元服务可能需要获取并展示用户的某些信息(如天气、日历事件等),这些信息在HarmonyOS的Api中可能就被称为“原信息”。
  3. Api版本的支持

    • 当HarmonyOS的Api提到从某个版本开始支持“原信息”XXX时,意味着从该版本开始,开发者可以在自己的元服务中利用这些新的“原信息”功能或数据,从而提升服务的性能和用户体验。
  4. 开发者的角度

    • 对于HarmonyOS的开发者来说,理解“原信息”的概念有助于更好地利用HarmonyOS提供的Api和功能来开发高质量的元服务。
    • 开发者需要关注HarmonyOS的Api文档和更新日志,以了解哪些“原信息”功能或数据在新版本中得到了支持,并据此更新自己的开发计划和代码。

综上所述,“原信息”在HarmonyOS开发中通常指的是与元服务相关的数据或信息。为了准确理解这一概念,开发者需要关注HarmonyOS的Api文档和更新日志,并了解元服务的开发和运行原理。

1 个回答

你可以参考一下metadata标签:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides...标签
Metadata主要是通过一个TAG(Key),去找对应的Data,用于传递参数和配置信息,减少内存拷贝操作
元服务问题可以参考链接:
https://developer.huawei.com/consumer/cn/doc/atomic-guides-V5...
示例参考:

import { hilog } from '@kit.PerformanceAnalysisKit'; 
import { BusinessError } from '@kit.BasicServicesKit'; 
import { bundleManager, common } from '@kit.AbilityKit'; 
 
@Entry 
@Component 
struct getMetadata { 
  @State message: string = 'Hello World'; 
  context = getContext(this) as common.UIAbilityContext; 
 
  build() { 
    RelativeContainer() { 
      Text(this.message) 
        .id('HelloWorld') 
        .fontSize(50) 
        .fontWeight(FontWeight.Bold) 
        .alignRules({ 
          center: { anchor: '__container__', align: VerticalAlign.Center }, 
          middle: { anchor: '__container__', align: HorizontalAlign.Center } 
        }) 
        .onClick(() => { 
          let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_METADATA | 
          bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION; 
          try { 
            bundleManager.getBundleInfoForSelf(bundleFlags).then((bundleInfo: bundleManager.BundleInfo) => { 
              hilog.info(0x0000, 'testTag', 'getBundleInfoForSelf successfully. Data: %{public}s', 
                JSON.stringify(bundleInfo)); 
              hilog.info(0x0000, 'testTag', 'getBundleInfoForSelf successfully. MetaData: %{public}s', 
                JSON.stringify(bundleInfo.appInfo.metadataArray)); 
              let arr = bundleInfo.appInfo.metadataArray; 
              console.info("testTag arr is ", (arr instanceof Array)); 
              hilog.info(0x0000, 'testTag', 'arr : %{public}s', JSON.stringify(arr.length)); 
              for (let data of arr) { 
                hilog.info(0x0000, 'testTag', 'MetaData name: %{public}s', JSON.stringify(data.moduleName)); 
                for (let metadata of data.metadata) { 
                  hilog.info(0x0000, 'testTag', 'MetaData content: %{public}s', JSON.stringify(metadata)); 
                } 
              } 
            }).catch((err: BusinessError) => { 
              hilog.error(0x0000, 'testTag', 'getBundleInfoForSelf failed. Cause: %{public}s', err.message); 
            }); 
          } catch (err) { 
            let message = (err as BusinessError).message; 
            hilog.error(0x0000, 'testTag', 'getBundleInfoForSelf failed: %{public}s', message); 
          } 
        }) 
    } 
    .height('100%') 
    .width('100%') 
  } 
}

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进