Fragment-Host 以何种方式与 OSGi 片段一起运行?

Which way does Fragment-Host operate with OSGi fragments?

我在让片段按我的预期工作时遇到了一些困难。它提出了一个问题,网络上的各种文章都没有回答。

首先,我对片段的理解是它很像 OSGi Bundle,只是它不会自行激活;相反,它由另一个包托管。这样,它可以被认为是对现有包的扩展。

以上如有错误请指正

现在的主要问题是关于片段的文章中经常带有的清单属性,特别是片段主机属性。 Fragment-Host 属性通常声明一个符号包名称,但不清楚的是:

  1. 如果包含 Fragment-Host 的清单属性是声明另一个模块中定义的片段的现有包的一部分(即:托管包声明它将托管的片段) -或-
  2. 如果包含 Fragment-Host 的清单属性是声明片段的模块的一部分,其值定义托管包(即:片段声明托管它的包)我相信这是一个,因为“Fragment-Host”听起来像是在声明将托管片段的内容。

这似乎是一个基本问题,但并没有得到真正的解答,并且在没有得到实际可行的示例的情况下,我只能质疑它应该采用哪种方式。大多数指定需要片段和“这些是清单应该是什么样子”的人都没有声明这种可以大大澄清问题的简单信息。

是(2)。片段包有一个 Fragment-Host 清单 header,它声明了其主机包的包符号名称。片段包“附加”到主机包并 class 由主机包的 class 加载器加载。