zoukankan      html  css  js  c++  java
  • OSGi bundle 与 fragment

    摘要

    在OSGi开发过程中有bundle,翻译成包、束、模块等,fragment,翻译成中文为片断,碎片。以下称为片断。Osgi中的片断,可以理解成附属于某个bundle(包),属于该bundle的一个部分。可以覆盖被附属bundle的配置,即对附属bundle的扩展。以下我们将介绍fragment的使用,使大家能更好的理解fragment这一概念。

    创建fragment

    先创建一个bundle

    image

    image

    目前MANIFEST.MF内容如下:

    image

    配置运行项如下图:

    image

    查询状态如下图:

    image

    image

    image

    image

    image

    image

    fragment 是不能够自己启动或停止的,host bundle可以有自己的配置,fragment也可以由自己的配置,可以用fragment的配置来覆盖host bundle的配置。

    下面我们就来试验一下

    首先在MainBundle的META-INF下建一个default-config.properties文件,如下图所示

    image

    现在我们在读取这个属性如下图所示

    image

    我们现在启动bundle,运行Run-configurations看看结果

    image

    结果如下:

    image

    好,我们现在在fragment里面也写个属性文件,在MainFragement的META-INF下建一个my-config.properties文件,如下图所示

    image

    我们修改一下代码:

    image

    我们再运行一下查看结果

    image

    结果如下:

    image

    打印的是fragment的配置,表明主bundle读取的是fragment中的META-INF/my-config.properties配置文件。
    这样做有什么优势呢?可以让fragment中的配置覆盖主bundle的配置,而不需要去改变主bundle的配置,直接为主bundle提供一个fragment即可。主bundle是唯一的,就好比定义了一个接口,有很多不同的实现。就像override一样。

    如果是多个fragment会是怎么样呢?答案是先加载那个,就读那个的配置,请看下图

    image

    image

    显示的结果如下:

    image

    和我们预测的一样

    fragment不能启动,当然也不能设置启动级别了,必须选择一个bundle host才能启动,可以做一些bundle的依赖类,来扩展host bundle的功能。

    源码下载:下载


  • 相关阅读:
    Java 缩放图片工具类,创建缩略图、伸缩图片比例
    93、App Links (应用程序链接)实例
    92、App Permissions(权限管理)实例
    MAC系统教程网站
    Android MVP 详解
    Android开发中,那些让你相见恨晚的方法、类或接口
    用Ultra ISO制作启动U盘装系统
    DB2 Magazine 中文版: 访问 iSeries 数据
    Eclipse快捷键大全
    同步灵无线锂电鼠G11-580HX独特“五灵键”
  • 原文地址:https://www.cnblogs.com/HeroBeast/p/2469482.html
Copyright © 2011-2022 走看看