活动组件进程空间分配方法及其相应的装置的制造方法

文档序号:8380798阅读:238来源:国知局
活动组件进程空间分配方法及其相应的装置的制造方法
【技术领域】
[0001] 本发明涉及计算机应用程序的编程控制技术,尤其涉及以Android原理为基础的 一种活动组件进程空间分配方法及其相应的装置。
【背景技术】
[0002] Android操作系统有其不同于其他操作系统的原理,Android为开发者提供 四大组件,具体指Activity、Service、Receiver以及Content Provider等组件,其中 Activity便是本发明所称的活动组件,通过对各组件的灵活运用,可以由开发者定制出 应用程序。Android应用程序以APK安装包的形式提供给用户进行安装,APK安装包中, 具有用于封装实现各个组件的程序代码的classes, dex代码文件以及用于表达应用程 序所用的各个组件的注册信息以及权限申请信息等内容的Androidmanifest. xml配置 文件。Activity组件通常用于实现用户界面以便应用程序能与用户进行人机交互,其代 码可以被封装在classes, dex文件中,且需要在该配置文件中实现注册。配置文件中, 各个activity的注册信息可以视为独立注册信息模块,视为"坑位"。Android系统在 对应用程序进行安装时,由PackageManageService(PMS)对APK安装包的各个组件进行 校验,而ActivityManagerSevice(AMS)则可以根据注册信息为活动组件建立进程入口 (ActivityThread),以确保活动组件的正常运行。
[0003] 通常,Activity活动组件应当预先在Androidmanafest. xml配置文件中进行坑位 注册,并且坑位与组件名称以及活动组件的其他属性之间应保持一一对应性和确定性,这 样才能够确保这些活动组件的正常注册。这种情况下,整个应用程序应当在开发时便确定 了这些活动组件,由这些活动组件有机组合而成的应用程序继而作为一个整体提供给终端 进行安装。终端每一次安装均是基于一个完整的应用程序的基础上进行,其中的每一个活 动组件都在配置文件中进行了一一对应的注册表达,不存在任何不确定性。换言之,任何未 经在Androidmanifest. xml注册的Activity活动组件,常规情况下均不能够被调度为进程 进行运行。由此可知,每一次为应用程序扩展功能而提供新的活动组件,均需要将应用程序 重新进行打包,并以打包后的安装文件提供给客户端进行安装,每次安装均是全量的。对于 远程下载的情况而言,既浪费流量,又降低了效率,更不利于应用程序的功能模块的灵活扩 展。
[0004] 为了克服应用程序版本更迭所导致的流量浪费的问题,现有技术常以提供增量包 的形式来降低安装流量,这种方式则需要架设繁重的云端服务架构,并且对终端的计算量 也提出了更高的要求。更关键的,这种方式并不能满足应用程序功能模块灵活扩展这一需 求。
[0005] 现有技术也尝试在Activity提供的界面中进一步提供网页访问接口,甚至结合 HTML5等新型技术,以期实现应用程序的功能扩充,但是,网页提供的交互功能毕竟有限,未 必能充分开发终端的最大性能,用户体验上也将有所下降。
[0006] 为了克服上述这些问题,除了需要提出新的技术框架之外,还需要为实施这些技 术框架提供必要的技术准备。

【发明内容】

[0007] 本发明的首要目的旨在解决上述至少一个问题,提供一种活动组件进程空间分配 方法以及与其相应的装置。
[0008] 为了实现上述目的,本发明采取如下技术方案:
[0009] 本发明提供的一种活动组件进程空间分配方法,包括如下步骤:
[0010] 接收为待加载活动组件分配活动组件坑位的请求;
[0011] 利用预设的优选策略,从坑位列表中为待加载活动组件优选相适配的目标活动组 件坑位,所述的坑位列表,用于存储多个预注册的活动组件坑位的特征信息;
[0012] 在坑位列表中标记该目标坑位的使用状态表征其已被分配,响应于该请求而提供 该目标坑位。
[0013] 较佳的,所述预注册的活动组件坑位,由实施本方法的宿主功能模块利用 其配置文件声明的用于表达预留的活动组件的注册信息进行注册。该配置文件为 Androidmanifest. xml 文件。
[0014] 较佳的,所述坑位列表由实施本方法的宿主功能模块启动时运行用于添加所述活 动组件坑位的特征信息的代码指令而实现构建。
[0015] 具体而言,所述坑位列表直接或间接建立有特征信息:活动组件坑位名、坑位使用 状态、相适配的待加载活动组件之间的映射关系。
[0016] 较佳的,所述的坑位使用状态按照如下方式设置:
[0017] 实施本方法的宿主功能模块在其Application. attachBaseContext方法中进行 初始化,将各活动组件坑位的使用状态设置为非使用状态;
[0018] 当该活动组件坑位被分配后,将其使用状态置为已被分配的状态;
[0019] 当活动组件坑位作为目标坑位被返回并被加载后,其使用状态被置为已被加载的 状态;
[0020] 当待加载活动组件的onCreate方法被调用后,相应的目标坑位的使用状态被置 为已创建的状态;
[0021] 当插件被释放时,其使用状态被置为已回收状态。
[0022] 具体的,所述预设的优选策略以所述的坑位使用状态为依据优选适配的活动组件 坑位。
[0023] 进一步,所述的坑位列表,包括有总表和类型表,所述的总表包含有所有活动组件 坑位的特征信息,所述的类型表只存储属于具有相同类型特征的活动组件坑位的特征信 息,应用预设的优选策略时,先对类型表进行检索,在类型表未找到适配的活动组件时才在 总表中进一步检索。
[0024] 具体的,通过响应于所述请求而返回所述目标坑位的坑位名而提供所述的目标坑 位。
[0025] 特别地,实施所述预设的优选策略时,依据活动组件的launchMode、taskAffinity 和/或theme属性进行判别以确定具体相对应的类型表。
[0026] 本发明提供的一种活动组件进程空间分配装置,包括:
[0027] 接收模块,用于接收为待加载活动组件分配活动组件坑位的请求;
[0028] 优选模块,用于利用预设的优选策略,从坑位列表中为待加载活动组件优选相适 配的目标活动组件坑位,所述的坑位列表,用于存储多个预注册的活动组件坑位的特征信 息;
[0029] 响应模块,用于在坑位列表中标记该目标坑位的使用状态表征其已被分配,响应 于该请求而提供该目标坑位。
[0030] 较佳的,所述预注册的活动组件坑位,由包含了本装置的宿主功能模块利用 其配置文件声明的用于表达预留的活动组件的注册信息进行注册。该配置文件为 Androidmanifest. xml 文件。
[0031] 较佳的,所述坑位列表由包含了本装置的宿主功能模块启动时运行用于添加所述 活动组件坑位的特征信息的代码指令而实现构建。
[0032] 进一步,所述坑位列表直接或间接建立有特征信息:活动组件坑位名、坑位使用状 态、相适配的待加载活动组件之间的映射关系。
[0033] 具体的,所述的坑位使用状态按照如下方式设置:
[0034] 包含了本装置的宿主功能模块在其Application. attachBaseContext方法中进 行初始化,将各活动组件坑位的使用状态设置为非使用状态;
[0035] 当该活动组件坑位被分配后,将其使用状态置为已被分配的状态;
[0036] 当活动组件坑位作为目标坑位被返回并被加载后,其使用状态被置为已被加载的 状态;
[0037] 当待加载活动组件的onCreate方法被调用后,相应的目标坑位的使用状态被置 为已创建的状态;
[0038] 当插件被释放时,其使用状态被置为已回收状态。
[0039] 进一步,所述优选模块,被配置为实施所述预设的优选策略时以所述的坑位使用 状态为依据优选适配的活动组件坑位。
[0040] 特别地,所述的坑位列表,包括有总表和类型表,所述的总表包含有所有活动组件 坑位的特征信息,所述的类型表只存储属于具有相同类型特征的活动组件坑位的特征信 息,所述的优选模块被配置为在应用预设的优选策略时,先对类型表进行检索,在类型表未 找到适配的活动组件时才在总表中进一步检索。
[0041] 进一步,所述的响应模块,被配置为通过响应于所述请求而返回所述目标坑位的 坑位名而提供所述的目标坑位。
[0042] 进一步,所述的优选模块,被配置为实施所述预设的优选策略时,依据活动组件的 launchMode、taskAffinity和/或theme属性进行判别以确定具体相对应的类型表。
[0043] 与现有技术相比较,本发明的方案具有以下优点:
[0044] 1、通过本发明提供的技术手段,可以借助预构建的坑位列表,为待加载的活动组 件分配相适配的预留的活动组件坑位,这样,便使得活动组件的动态调度成为可能,可以实 现活动组件(Activity)的完全自定义,由此,加载活动组件无需修改主程序,可以使得作 为主程序的宿主功能模块永远不需升级,只需要以宿主功能模块实施的本发明的技术手 段,即可实现按需加载相应的活动组件,理论上可以无限扩展主程序的功能。
[0045] 2、由于实施了本发明的主程序无需升级,而所扩展的活动组件又便于被打包处理 成插件功能模块,因此,每次进行升级时,只需下载相应的插件功能模块即可。这就真正做 到了最小化安装,大大节省流量,又不需
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1