Fragment可以认为是插件的一个小的片段, 有时候允许在插件中使用,如果你想用的话,可以安装,卸载,更新等,可以认为Fragment是依附在plugin上,在Fragment只需要指定它的Host Plugin,指定之后Fragment就可以引用到Plugin中的代码,如下
Fragment可以用来保存使用Plugin的其它许多信息,例如一个插件中可能有个Lib包,它是针对于特定的操作系统或者窗口系统或者语言包等等,这些可以作为插件的信息添加到Fragment中,由Fragment记录。用上图的方法创建一个Fragment然后关联到它的Host Plugin上,无论如何,从文件上看Fragment和Plugin很相似,但是也有一些不同的地方如:
1>. 在Fragment中许多信息存在fragment.xml中,而在Plugin中存在plugin.xml中
2>. 在Fragment中文件的根节点为<fragment/>,为plugin中为<plugin/> .
3>. Fragment可以自动继承Host Plugin中的代码,也可以直接引用,但是host plugin中不能依赖Fragment
除了这些,一个Fragment可以说和plugin没有什么区别,它也有自己的lib,extensions,等等,当Fragment被插件平台加载时,它是逻辑并入到Host Plugin而非是物理并入。完全可以直接将Fragment中Manifest中的东西直接复制到Host Plugin中,所以,Fragment需要的classPath也可以写到Host Plugin中,正如前面说的,Fragment中的类其实可以直接写到HostPlugin中,也可以直接引用到Host Plugin中的class,甚至是一些plublic 的方法。有些方法可以找到并且打开plugin,这些都作为参数的一些插件安装的相对路径,都可以本地化或者读取资源从Fragment的安装路径中。