Activity组件加载方法及装置制造方法及图纸

技术编号:14817940 阅读:84 留言:0更新日期:2017-03-15 11:51
本发明专利技术提供一种Activity组件加载方法及装置。其中,该Activity组件加载方法包括:获取预先嵌入Android系统的开放服务网关协议框架的BundleContext;确定待启动的Activity组件;获取与所述待启动的Activity组件关联的bundle标识符;根据当前获取的bundle标识符,调用所述BundleContext的BundleContext.start方法启动相应的bundle文件,以便加载相应的Activity组件,其中,所述bundle文件由jar文件转化而成,所述jar文件由所述Activity组件的源代码编译而成。本发明专利技术提供的技术方案能够使得Activity组件的动态加载成为可能。

【技术实现步骤摘要】

本专利技术涉及Android系统领域,具体涉及一种Activity组件加载方法及装置
技术介绍
Android系统是一种基于Linux的自由及开放源代码的操作系统,目前被广泛应用于智能终端(例如智能手机、平板电脑和智能电视等)中。Activity组件是Android系统的四大组件之一,而程序的Activity组件需要在该程序的AndroidManifest.xml文件中进行注册,并且,程序开发的Activity组件的名称需要与该程序的AndroidManifest.xml文件中指定的类名相同。目前,通过基于dalvik.system.DexClassLoader加载.dex文件的方式可以改变程序的代码逻辑,达到不安装新的程序安装包就可升级该程序的目的。然而,上述方式存在一定的局限性,由于程序开发的Activity组件需要和该程序的AndroidManifest.xml文件中指定的类名相同,并且由于AndroidManifest.xml文件为固有属性,无法在程序运行时改变,因此,通过上述方式无法在程序运行时动态加载程序的Activity组件。
技术实现思路
本专利技术提供一种Activity组件加载方法及装置,使得Activity组件的动态加载成为可能。本专利技术第一方面提供一种Activity组件加载方法,应用于Android系统,该Activity组件加载方法,包括:获取预先嵌入Android系统的开放服务网关协议框架的BundleContext;确定待启动的Activity组件;获取与所述待启动的Activity组件关联的bundle标识符;根据当前获取的bundle标识符,调用所述BundleContext的BundleContext.start方法启动相应的bundle文件,以便加载相应的Activity组件,其中,所述bundle文件由jar文件转化而成,所述jar文件由所述Activity组件的源代码编译而成。本专利技术第二方面提供一种Activity组件加载装置,应用于Android系统,该Activity组件加载装置包括:第一获取单元,用于获取预先嵌入Android系统的开放服务网关协议框架的BundleContext;确定单元,用于确定待启动的Activity组件;第二获取单元,用于获取与所述待启动的Activity组件关联的bundle标识符;启动单元,用于根据当前所述第二获取单元获取的bundle标识符,调用所述BundleContext的BundleContext.start方法启动相应的bundle文件,以便加载相应的Activity组件,其中,所述bundle文件由jar文件转化而成,所述jar文件由所述Activity组件的源代码编译而成。由上可见,本专利技术中将由Activity组件的源代码编译而成的jar文件转化成bundle文件,并且,在Android系统中嵌入开放服务网关框架(OSGI,OpenServiceGatewayInitiative),借助该OSGI框架实现了bundle文件的运行,进而实现了相应Activity组件的加载。由于本专利技术中Activity组件的加载是通过启动相应的bundle文件来实现,因此,Activity组件的加载无需受限于AndroidManifest.xml文件,从而使得Activity组件的动态加载成为可能。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术提供的Activity组件加载方法一个实施例流程示意图;图2为本专利技术提供在图1所示方法基础上的一种Activity组件动态更新方法实施例流程示意图;图3为本专利技术提供在图1或图2所示方法基础上的一种Activity组件动态卸载方法实施例流程示意图;图4为本专利技术提供的Activity组件加载装置一个实施例结构示意图。具体实施方式为使得本专利技术的专利技术目的、特征、优点能够更加的明显和易懂,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而非全部实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术实施例提供一种Activity组件加载方法,请参阅图1所示,本专利技术实施例中的Activity组件加载方法可以包括如下步骤:步骤101、获取预先嵌入Android系统的开放服务网关协议框架的BundleContext;本专利技术实施例中,开放服务网关协议框架也即OSGI框架,是实现并提供OSGI功能的运行环境。OSGI框架在创建基于OSGI的应用时起着核心作用,因为它是应用的执行环境。OSGI联盟在OSGI框架规范中定义了框架的正确行为,这样就可以基于一个定义清晰的应用程序编程接口(API,ApplicationProgrammingInterface)进行编程。这个框架是依据OSGI规范中定义的三个概念层设计的:模块层:关注于打包和共享代码。模块层定义了OSGI模块的概念,并将之称为一个bundle。bundle文件是一个包含元数据(关于数据的数据)的jar文件,由类文件和相关资源组成。它是构成一个特定应用程序的多个逻辑模块。服务层:关注于模块,特别是模块内的组件间的交互和通信。服务层支持和促成了一个灵活的应用编程模型。主要涉及面向服务的发布、查找和绑定交互模式,即服务提供者将服务发布到服务注册中心,然后服务客户端通过搜索服务注册中心,查找可供使用的服务。生命周期层:关注于提供执行时模块管理和对底层OSGI框架的访问。生命周期层定义了在OSGI框架中是如何动态安装和管理来的。生命周期层定义了bundle生命周期的操作(如安装、更新、启动、停止和卸载)。这些生命周期的操作使得可以用一种定义明确的方式动态地提供、管理和改进应用程序。bundle是OSGI中的模块模型。标准Java平台的jar包中包含有class文件以及相应的资源文件,bundle文件可以简单地理解为是增加了元数据的jar包。一个bundle文件中包含了java类和一些其他的数据资源,这些数据可以是HTML文件、帮助文档以及图标等。每个bundle文件都对应一个唯一的并且在生命周期中保持不变的ID号码,该ID由OSGI框架分配。为便于描述,将模块定义为:一个从逻辑上封装实现类的集合,一个基于实现类子集的可选公共API,以及一个对外部代码依赖关系的集合。从用户层可以把bundle文件理解为一个功能模块。bundle文件可以从项目中导入导出,并且能够与项目中的其它bundle共享jar文件。本专利技术实施例中可以将bundle文件定义为:一个模块化的物理单元,以jar文件形式包含代码、资源和元数据,其中jar文件的边界也作为执行时逻辑模块化的封装边界。BundleContext是指模块在OSGI框架中运行时的上下文,该上下文提供了模块与OSGI框架进行交互的方法(即为应用提供执行本文档来自技高网...
Activity组件加载方法及装置

【技术保护点】
一种Activity组件加载方法,应用于Android系统,其特征在于,所述Activity组件加载方法包括:获取预先嵌入Android系统的开放服务网关协议框架的BundleContext;确定待启动的Activity组件;获取与所述待启动的Activity组件关联的bundle标识符;根据当前获取的bundle标识符,调用所述BundleContext的BundleContext.start方法启动相应的bundle文件,以便加载相应的Activity组件,其中,所述bundle文件由jar文件转化而成,所述jar文件由所述Activity组件的源代码编译而成。

【技术特征摘要】
1.一种Activity组件加载方法,应用于Android系统,其特征在于,所述Activity组件加载方法包括:获取预先嵌入Android系统的开放服务网关协议框架的BundleContext;确定待启动的Activity组件;获取与所述待启动的Activity组件关联的bundle标识符;根据当前获取的bundle标识符,调用所述BundleContext的BundleContext.start方法启动相应的bundle文件,以便加载相应的Activity组件,其中,所述bundle文件由jar文件转化而成,所述jar文件由所述Activity组件的源代码编译而成。2.根据权利要求1所述的Activity组件加载方法,其特征在于,所述根据获取的所述bundle标识符,调用所述BundleContext的BundleContext.start方法启动相应的bundle文件之后还包括:获取来自服务器的第一配置文件,其中,所述第一配置文件包括:bundle符号名称、版本号和bundle文件下载地址;若本地存在满足第一条件的配置文件,则:根据所述第一配置文件中的bundle文件下载地址下载相应的bundle文件;基于当次下载的bundle文件更新本地的bundle文件;将满足所述第一条件的配置文件包含的版本号更新为所述第一配置文件中的版本号;其中,所述第一条件为:配置文件包含的bundle符号名称与所述第一配置文件包含的bundle符号名称一致,且,配置文件包含的版本号低于所述第一配置文件包含的版本号。3.根据权利要求1所述的Activity组件加载方法,其特征在于,所述根据获取的所述bundle标识符,调用所述BundleContext的BundleContext.start方法启动相应的bundle文件之后还包括:获取来自服务器的第二配置文件,其中,所述第二配置文件包括:bundle符号名称、版本号和命令信息;若本地存在满足第二条件的配置文件且上述第二配置文件包含的命令信息指示的命令为卸载bundle文件,则:根据所述第二配置文件包含的bundle符号名称,获取与所述bundle符号名称关联的bundle标识符;根据当前获取的bundle标识符,卸载本地存储的相应的bundle文件;其中,所述第二条件为:配置文件包含的bundle符号名称与所述第二配置文件包含的bundle符号名称一致,且,配置文件包含的版本号与所述第二配置文件包含的版本号一致。4.根据权利要求1至3所述的Activity组件加载方法,其特征在于,所述获取预先嵌入Android系统的开放服务网关协议框架的BundleContext,之前包括:通过已启动的OSGI框架服务的代理获取开放服务网关协议框架的实例,其中,所述OSGI框架服务为:预先基于Framework创建的,用以实现在所述Android系统运行开放服务网关协议框架的服务;所述获取预先嵌入Android系统的开放服务网关协议框架的BundleContext具体为:基于获取的所述开放服务网关协议框架的实例,获取预先嵌入Android系统的开放服务网关协议框架的BundleContext。5.根据权利要求4所述的Activity组件加载方法,其特征在于,所述通过已启动的OSGI框架服务的代理获取开放服务网关协议框架的实例,之前还包括...

【专利技术属性】
技术研发人员:孙向作
申请(专利权)人:TCL集团股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1