一种Android程序中的组件管理方法和装置制造方法及图纸

技术编号:11856383 阅读:123 留言:0更新日期:2015-08-11 03:02
本发明专利技术公开了一种Android程序中的组件管理方法和装置,该方法包括:在Android程序的配置文件中预留一个或多个组件,为预留的每个组件声明一个进程;在Android程序的插件的配置文件中声明该插件要使用的实现特定功能的组件的内容;当插件需要运行实现特定功能的组件时,从预留的组件所声明的进程中找到一个可用进程;将实现特定功能的组件的内容传递到所找到的可用进程对应的同类型组件中;启动可用进程,使得可用进程对应的同类型组件在该进程中运行。本发明专利技术提供的技术方案实现了在Android主程序不升级的前提下,插件对组件的自由定制,能够大幅度减少内存占用,使得Android程序的功能扩展更加便捷化、高效化、符合应用需求。

【技术实现步骤摘要】

本专利技术涉及移动终端
,具体涉及一种Android程序中的组件管理方法和 装置。
技术介绍
随着Android系统的迅猛发展,它已经成为全球范围内具有广泛影响力的操作系 统之一,被越来越广泛地应用于手机、PAD、可佩带设备等移动终端,这也造就了 Android开 发需求的快速增长。 现有技术中,一款Android程序的功能的扩展,依赖于插件中能够实现特定功能 的组件的运行,然而,Android系统只能调用Android程序的配置文件中已声明的组件,即 系统通过Android程序的配置文件调用标准ClassLoader方法加载已声明的组件的Class 对象,进而才能运行对应组件;导致Android程序在加载插件、运行插件中能够实现特定 功能的组件之前,必须先要对该Android程序的配置文件进行整体的更新升级。这就使得 Android程序的功能扩展受到很大限制,插件无法自由定制Android组件,Android开发呈 现低效、复杂、不符合应用需求的劣势;对于用户开说,很多时候Android程序只是增加了 一个很小的功能,却需要下载一个完整的APK进行更新,操作过程繁琐,不符合用户需求。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上 述问题的一种。 依据本专利技术的一个方面,提供了一种Android程序中的组件管理方法,该方法包 括: 在所述Android程序的配置文件中预留一个或多个组件,为预留的每个组件声明 一个进程; 在所述Android程序的插件的配置文件中声明该插件要使用的实现特定功能的 组件的内容; 当所述插件需要运行所述实现特定功能的组件时,从预留的组件所声明的进程中 找到一个可用进程; 将所述实现特定功能的组件的内容传递到所找到的可用进程对应的同类型组件 中; 启动所述可用进程,使得所述可用进程对应的同类型组件在该进程中运行。 可选地,在所述启动所述可用进程之前,该方法进一步包括: 获取并加载所述实现特定功能的组件的Class对象。 可选地,所述获取并加载所述实现特定功能的组件的Class对象是指: 从所述插件的配置文件中获取所述实现特定功能的组件的内容;自定义 ClassLoader方法;由所述自定义ClassLoader方法根据所述实现特定功能的组件的内容获取并加 载所述实现特定功能的组件的Class对象。 可选地,所述在所述Android程序的配置文件中预留一个或多个组件,为预留的 每个组件声明一个进程包括: 利用所述Android程序的AndroidManifest.xml文件中的〈service〉标签预留一 个或多个Service组件,为预留的每个Service组件声明一个进程;和 / 或, 利用所述Android程序的AndroidManifest.xml文件中的〈provider〉标签预留 一个或多个ContentProvider组件,为预留的每个ContentProvider组件声明一个进程。 可选地,所述将所述实现特定功能的组件的内容传递到所找到的可用进程对应的 同类型组件中是指: 将所述实现特定功能的组件的内容封装在ComponentName类中; 通过Intent方法将该ComponentName类传递到所找到的可用进程对应的同类型 组件中。 可选地,当所述实现特定功能的组件为Service组件时,所述启动所述可用进程, 使得所述可用进程对应的同类型组件在该进程中运行是指: 通过context.startService方法启动所述可用进程,使得所述可用进程对应的 Service组件在该进程中运行。 可选地,该方法进一步包括: 在所述Android程序的配置文件中实时记录更新所述Android程序的各进程的进 程信息。 可选地,所述进程信息包括以下信息中的一个或多个: 进程编号、进程状态、进程启动/修改状态的时间、进程对应的组件名、进程的ID 标识、进程中运行各组件的数量。 可选地,在所述从预留的组件所声明的进程中找到一个可用进程之前,该方法进 一步包括: 遍历所述Android程序的所有进程,根据各进程的进程信息,判断是否存在已分 配给所述实现特定功能的组件的进程; 是则,直接令所述实现特定功能的组件在该进程中运行,不再执行所述从预留的 组件所声明的进程中找到一个可用进程的操作。 可选地,所述从预留的组件所声明的进程中找到一个可用进程包括: 遍历所有预留的组件所声明的进程,根据各进程的进程信息,判断是否存在闲置 进程; 如果存在一个闲置进程,则将该闲置进程作为可用进程; 如果存在多个闲置进程,则选择其中最早启动的进程作为可用进程。 可选地,所述从预留的组件所声明的进程中找到一个可用进程进一步包括: 如果不存在闲置进程,则强制回收最早启动的预留的组件所声明的进程,重新创 建该进程作为可用进程。 可选地,所述遍历所有预留的组件所声明的进程,根据各进程的进程信息,判断是 否存在闲置进程包括: 遍历所有预留的组件所声明的进程,判断是否存在处于未启动状态的进程,是则 强制回收该进程,重新创建该进程作为所述闲置进程; 否则判断是否存在处于停止状态的进程,是则强制回收该进程,重新创建该进程 作为所述闲置进程; 否则判断是否存在处于暂停状态且距离上次启动已超过指定时间的进程,是则强 制回收该进程,重新创建该进程作为所述闲置进程; 否则判断是否存在处于启动状态且距离上次使用Activity组件、Service组件、 ContentProvide组件r和Binder组件均已超过指定时间的进程,是则强制回收该进程,重 新创建该进程作为所述闲置进程。 依据本专利技术的另一个方面,提供了一种Android程序中的组件管理装置,该装置 包括: 配置单元,适于在所述Android程序的配置文件中预留一个或多个组件,为预留 的每个组件声明一个进程;以及适于在所述Android程序的插件的配置文件中声明该插件 要使用的实现特定功能的组件的内容; 查找单元,适于当所述插件需要运行所述实现特定功能的组件时,从预留的组件 所声明的进程中找到一个可用进程;启动单元,适于将所述实现特定功能的组件的内容传递到所找到的可用进程对应 的同类型组件中;以及适于启动所述可用进程,使得所述可用进程对应的同类型组件在该 进程中运行。 可选地,所述启动单元,进一步适于获取并加载所述实现特定功能的组件的Class 对象。 可选地,所述启动单元,适于从所述插件的配置文件中获取所述实现特定功能的 组件的内容;以及适于自定义ClassLoader方法;由所述自定义ClassLoader方法根据所 述实现特定功能的组件的内容获取并加载所述实现特定功能的组件的Class对象。 可选地,所述配置单元,适于利用所述Android程序的AndroidManifest.xml文件 中的〈service〉标签预留一个或多个Service组件,为预留的每个Service组件声明一个 进程;和/或,适于利用所述Android程序的AndroidManifest.xml文件中的〈provider〉 标签预留一个或多个ContentProvider组件,为预留的每个ContentProvid本文档来自技高网...

【技术保护点】
一种Android程序中的组件管理方法,其中,该方法包括:在所述Android程序的配置文件中预留一个或多个组件,为预留的每个组件声明一个进程;在所述Android程序的插件的配置文件中声明该插件要使用的实现特定功能的组件的内容;当所述插件需要运行所述实现特定功能的组件时,从预留的组件所声明的进程中找到一个可用进程;将所述实现特定功能的组件的内容传递到所找到的可用进程对应的同类型组件中;启动所述可用进程,使得所述可用进程对应的同类型组件在该进程中运行。

【技术特征摘要】

【专利技术属性】
技术研发人员:宋照春张炅轩姚彤
申请(专利权)人:北京奇虎科技有限公司奇智软件北京有限公司
类型:发明
国别省市:北京;11

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

1