首页 / 专利库 / 软件 / 软件包 / 软件组件 / 插件 / 一种Android程序中的进程管理方法和装置

一种Android程序中的进程管理方法和装置

阅读:773发布:2024-02-17

专利汇可以提供一种Android程序中的进程管理方法和装置专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种Android程序中的 进程 管理方法和装置,该方法包括:在Android程序的配置文件中预留一个或多个进程;当Android程序中的 插件 请求 分配进程时,判断预留的进程中是否存在可用进程;是则,将可用进程分配给插件;启动可用进程,使得插件在该进程中运行。本发明提供的技术方案在保证进程分配互不干扰的同时,提出了一种有效、合理、巧妙且符合分配需求的Android程序中的进程管理方案,无需过多干预,实现了插件在独立进程中的自由使用,能够大幅度减少Android系统的内存占用。,下面是一种Android程序中的进程管理方法和装置专利的具体信息内容。

1.一种Android程序中的进程管理方法,其中,该方法包括:
在所述Android程序的配置文件中预留一个或多个进程;
当所述Android程序中的插件请求分配进程时,判断预留的进程中是否存在可用进程;
服务器中预存有与所述Android程序适配的多个插件信息的插件列表;
是则将所述可用进程分配给所述插件;
启动所述可用进程,使得所述插件在该可用进程中运行;
其中,所述判断预留的进程中是否存在可用进程包括:
遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程;
如果存在一个闲置进程,则将该闲置进程作为可用进程;
如果存在多个闲置进程,则选择其中最早启动的进程作为可用进程;
其中,所述遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程包括:
遍历所有预留的进程,判断是否存在处于未启动状态的预留的进程,是则强制回收该处于未启动状态的预留的进程,重新创建该处于未启动状态的预留的进程作为所述闲置进程。
2.如权利要求1所述的方法,其中,该方法进一步包括:
在所述Android程序的配置文件中实时记录更新所述Android程序的各进程的进程信息。
3.如权利要求2所述的方法,其中,所述进程信息包括以下信息中的一个或多个:
进程编号、进程状态、进程启动/修改状态的时间、进程对应的插件名、进程的ID标识、进程中运行Activity的数量、进程中运行Service的数量和进程中运行Service-Binder的数量。
4.如权利要求1所述的方法,其中,所述在所述Android程序的配置文件中预留一个或多个进程为:
利用所述Android程序的AndroidManifest.xml文件中的标签预先声明Content Provider以及对应的进程。
5.如权利要求4所述的方法,其中,所述启动所述可用进程是指:
通过调用预先声明的与所述可用进程对应的ContentProvider,启动所述可用进程。
6.如权利要求1所述的方法,其中,在所述判断预留的进程中是否存在可用进程之前,该方法进一步包括:
遍历所述Android程序的所有进程,根据各进程的进程信息,判断是否存在已分配给所述插件的进程;
是则直接令所述插件在该已分配给所述插件的进程中运行,不再执行所述判断预留的进程中是否存在可用进程的操作。
7.如权利要求1所述的方法,其中,所述判断预留的进程中是否存在可用进程进一步包括:
如果不存在闲置进程,则强制回收最早启动的预留的进程,重新创建该回收的最早启动的预留的进程作为可用进程。
8.如权利要求1所述的方法,其中,所述遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程还包括:
若不存在处于未启动状态的预留的进程,则判断是否存在处于停止状态的预留的进程,是则强制回收该处于停止状态的预留的进程,重新创建该处于停止状态的预留的进程作为所述闲置进程;
否则判断是否存在处于暂停状态且距离上次启动已超过指定时间的预留的进程,是则强制回收该处于暂停状态且距离上次启动已超过指定时间的预留的进程,重新创建该处于暂停状态且距离上次启动已超过指定时间的预留的进程作为所述闲置进程;
否则判断是否存在处于启动状态且距离上次使用Activity、Service和Binder均已超过指定时间的预留的进程,是则强制回收该处于启动状态且距离上次使用Activity、Service和Binder均已超过指定时间的预留的进程,重新创建该处于启动状态且距离上次使用Activity、Service和Binder均已超过指定时间的预留的进程作为所述闲置进程。
9.一种Android程序中的进程管理装置,其中,该装置包括:
配置单元,适于在所述Android程序的配置文件中预留一个或多个进程;
判断单元,适于当所述Android程序中的插件首次运行时,判断预留的进程中是否存在可用进程;是则通知进程分配单元;云端服务器中预存有与所述Android程序适配的多个插件信息的插件列表;
所述进程分配单元,适于将所述可用进程分配给所述插件;并启动所述可用进程,使得所述插件在该可用进程中运行;
其中,所述判断单元,适于遍历所有预留的进程,根据各进程的进程信息,判断是否存在处于未启动状态的预留的进程,是则强制回收该处于未启动状态的预留的进程,重新创建该处于未启动状态的预留的进程作为闲置进程;如果存在一个闲置进程,则将该闲置进程作为可用进程;如果存在多个闲置进程,则选择其中最早启动的进程作为可用进程。
10.如权利要求9所述的装置,其中,
所述配置单元,进一步适于在所述Android程序的配置文件中实时记录更新所述Android程序的各进程的进程信息。
11.如权利要求10所述的装置,其中,所述进程信息包括以下信息中的一个或多个:
进程编号、进程状态、进程启动/修改状态的时间、进程对应的插件名、进程的ID标识、进程中运行Activity的数量、进程中运行Service的数量和进程中运行Service-Binder的数量。
12.如权利要求9所述的装置,其中,
所述配置单元,适于利用所述Android程序的AndroidManifest.xml文件中的标签预先声明Content Provider以及对应的进程。
13.如权利要求12所述的装置,其中,
所述进程分配单元,适于通过调用预先声明的与所述可用进程对应的
ContentProvider,启动所述可用进程。
14.如权利要求9所述的装置,其中,
所述判断单元,进一步适于在所述判断预留的进程中是否存在可用进程之前,遍历所述Android程序的所有进程,根据各进程的进程信息,判断是否存在已分配给所述插件的进程;是则直接通知所述进程分配单元,不再执行所述判断预留的进程中是否存在可用进程的操作;
所述进程分配单元,适于令所述插件在该已分配给所述插件的进程中运行。
15.如权利要求9所述的装置,其中,
所述判断单元,进一步适于在不存在闲置进程时,强制回收最早启动的预留的进程,重新创建该回收的最早启动的预留的进程作为可用进程。
16.如权利要求9所述的装置,其中,
所述判断单元,适于在不存在处于未启动状态的预留的进程时,判断是否存在处于停止状态的预留的进程,是则强制回收该处于停止状态的预留的进程,重新创建该处于停止状态的预留的进程作为所述闲置进程;否则判断是否存在处于暂停状态且距离上次启动已超过指定时间的预留的进程,是则强制回收该处于暂停状态且距离上次启动已超过指定时间的预留的进程,重新创建该处于暂停状态且距离上次启动已超过指定时间的预留的进程作为所述闲置进程;否则判断是否存在处于启动状态且距离上次使用Activity、Service和Binder均已超过指定时间的预留的进程,是则强制回收该处于启动状态且距离上次使用Activity、Service和Binder均已超过指定时间的预留的进程,重新创建该处于启动状态且距离上次使用Activity、Service和Binder均已超过指定时间的预留的进程作为所述闲置进程。

说明书全文

一种Android程序中的进程管理方法和装置

技术领域

[0001] 本发明涉及移动终端技术领域,具体涉及一种Android程序中的进程管理方法和装置。

背景技术

[0002] 随着Android系统的迅猛发展,它已经成为全球范围内具有广泛影响操作系统之一,被越来越广泛地应用于手机、PAD、可佩带设备等移动终端,这也造就了Android开发需求的快速增长。
[0003] 现有技术中,一款Android应用程序的功能的扩展,依赖于插件的使用,插件需要使用的进程都需要在主程序的配置文件AndroidManifest.xml中写死。因此当Android应用程序需要通过增加一个插件来扩展某个功能时,由于Android程序只能占用其配置文件中已声明的进程,因此,先要对该Android程序的进程进行新的调配,并对配置文件进行整体的更新升级。在该种机制下,导致各个插件的进程分配的相互干扰,难以实现插件在独立进程中的自由使用,使得Android程序中的进程管理呈现低效、复杂、占用系统内存、不符合应用需求的劣势;对于用户开说,加载插件时需要下载一个完整的APK进行更新,操作过程繁琐,不符合用户需求。

发明内容

[0004] 鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种Android程序中的进程管理方法和装置。
[0005] 依据本发明的一个方面,提供了一种Android程序中的进程管理方法,该方法包括:
[0006] 在所述Android程序的配置文件中预留一个或多个进程;
[0007] 当所述Android程序中的插件请求分配进程时,判断预留的进程中是否存在可用进程;
[0008] 是则将所述可用进程分配给所述插件;
[0009] 启动所述可用进程,使得所述插件在该可用进程中运行。
[0010] 可选地,该方法进一步包括:
[0011] 在所述Android程序的配置文件中实时记录更新所述Android程序的各进程的进程信息。
[0012] 可选地,所述进程信息包括以下信息中的一个或多个:
[0013] 进程编号、进程状态、进程启动/修改状态的时间、进程对应的插件名、进程的ID标识、进程中运行Activity的数量、进程中运行Service的数量和进程中运行Service-Binder的数量。
[0014] 可选地,所述在所述Android程序的配置文件中预留进程为:
[0015] 利用所述Android程序的AndroidManifest.xml文件中的标签预先声明Content Provider以及对应的进程。
[0016] 可选地,所述启动所述可用进程是指:
[0017] 通过调用预先声明的与所述可用进程对应的ContentProvider,启动所述可用进程。
[0018] 可选地,在所述判断预留的进程中是否存在可用进程之前,该方法进一步包括:
[0019] 遍历所述Android程序的所有进程,根据各进程的进程信息,判断是否存在已分配给所述插件的进程;
[0020] 是则直接令所述插件在该已分配给所述插件的进程中运行,不再执行所述判断预留的进程中是否存在可用进程的操作。
[0021] 可选地,所述判断预留的进程中是否存在可用进程包括:
[0022] 遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程;
[0023] 如果存在一个闲置进程,则将该闲置进程作为可用进程;
[0024] 如果存在多个闲置进程,则选择其中最早启动的进程作为可用进程。
[0025] 可选地,所述判断预留的进程中是否存在可用进程进一步包括:
[0026] 如果不存在闲置进程,则强制回收最早启动的预留的进程,重新创建该回收的最早启动的预留的进程作为可用进程。
[0027] 可选地,所述遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程包括:
[0028] 遍历所有预留的进程,判断是否存在处于未启动状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;
[0029] 否则判断是否存在处于停止状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;
[0030] 否则判断是否存在处于暂停状态且距离上次启动已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;
[0031] 否则判断是否存在处于启动状态且距离上次使用Activity、Service和Binder均已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程。
[0032] 依据本发明的另一个方面,提供了一种Android程序中的进程管理装置,该装置包括:
[0033] 配置单元,适于在所述Android程序的配置文件中预留一个或多个进程;
[0034] 判断单元,适于当所述Android程序中的插件首次运行时,判断预留的进程中是否存在可用进程;是则通知进程分配单元;
[0035] 所述进程分配单元,适于将所述可用进程分配给所述插件;并启动所述可用进程,使得所述插件在该进程中运行。
[0036] 可选地,所述配置单元,进一步适于在所述Android程序的配置文件中实时记录更新所述Android程序的各进程的进程信息。
[0037] 可选地,所述进程信息包括以下信息中的一个或多个:
[0038] 进程编号、进程状态、进程启动/修改状态的时间、进程对应的插件名、进程的ID标识、进程中运行Activity的数量、进程中运行Service的数量和进程中运行Service-Binder的数量。
[0039] 可选地,所述配置单元,适于利用所述Android程序的AndroidManifest.xml文件中的标签预先声明Content Provider以及对应的进程。
[0040] 可选地,所述进程分配单元,适于通过调用预先声明的与所述可用进程对应的ContentProvider,启动所述可用进程。
[0041] 可选地,所述判断单元,进一步适于在所述判断预留的进程中是否存在可用进程之前,遍历所述Android程序的所有进程,根据各进程的进程信息,判断是否存在已分配给所述插件的进程;是则直接通知所述进程分配单元,不再执行所述判断预留的进程中是否存在可用进程的操作;
[0042] 所述进程分配单元,适于令所述插件在该已分配给所述插件的进程中运行。
[0043] 可选地,所述判断单元,适于遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程;如果存在一个闲置进程,则将该闲置进程作为可用进程;如果存在多个闲置进程,则选择其中最早启动的进程作为可用进程。
[0044] 可选地,所述判断单元,进一步适于在不存在闲置进程时,强制回收最早启动的预留的进程,重新创建该回收的最早启动的预留的进程作为可用进程。
[0045] 可选地,所述判断单元,适于遍历所有预留的进程,根据各进程的进程信息,判断是否存在处于未启动状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;否则判断是否存在处于停止状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;否则判断是否存在处于暂停状态且距离上次启动已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;否则判断是否存在处于启动状态且距离上次使用Activity、Service和Binder均已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程。
[0046] 由上述可知,本发明提供的技术方案通过对Android程序的配置文件的预先设置,预留一个或多个进程,当插件请求分配进程时,无需重新配置Android程序,直接从预留的进程中选择空闲进程分配给插件,使得插件在进程中得以运行,实现了插件在独立进程中的自由使用。本发明在保证进程分配互不干扰的同时,提出了一种有效、合理、巧妙且符合分配需求的Android程序中的进程管理方案,无需过多干预,能够大幅度减少Android系统的内存占用。
[0047] 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明
[0048] 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0049] 图1示出了根据本发明一个实施例的一种Android程序中的进程管理方法的流程图
[0050] 图2示出了根据本发明一个实施例的一种判断是否存在闲置进程的方法的流程图;
[0051] 图3示出了根据本发明一个实施例的一种Android程序中的进程管理装置的示意图。

具体实施方式

[0052] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0053] 图1示出了根据本发明一个实施例的一种Android程序中的进程管理方法的流程图。如图1所示,该方法包括:
[0054] 步骤S110,在Android程序的配置文件中预留一个或多个进程。
[0055] 步骤S120,当Android程序中的插件请求分配进程时,判断预留的进程中是否存在可用进程。
[0056] 步骤S130,是则将可用进程分配给插件。
[0057] 步骤S140,启动可用进程,使得插件在该可用进程中运行。
[0058] 可见,图1所示的方法通过对Android程序的配置文件的预先设置,预留一个或多个进程,当插件请求分配进程时,无需重新配置Android程序,直接从预留的进程中选择空闲进程分配给插件,使得插件在进程中得以运行,实现了插件在独立进程中的自由使用。本方案在保证进程分配互不干扰的同时,提出了一种有效、合理、巧妙且符合分配需求的Android程序中的进程管理方法,无需过多干预,能够大幅度减少Android系统的内存占用,并且由于主程序无需升级,而所扩展的活动组件又便于被打包处理成插件功能模,因此,每次进行升级时,只需下载相应的插件功能模块即可。这就真正做到了最小化安装,大大节省流量,又不需大量消耗终端的资源,既省流量又能高效运行。
[0059] 在本发明的实施例中,Android程序可以是某主程序,即宿主程序,如360手机卫士等;插件可以是指附属程序,如360手机卫士中的“防盗”插件、“开机加速”插件、“日历”插件等。
[0060] AndroidManifest.xml是Android程序的核心配置文件,位于整个项目的根目录,声明了Android程序中所用到的组件,包括它们各自的实现类,能被处理的数据和启动位置等。ContentProvider是Android程序的四大组件之一,作为内容提供者支持多个Android程序共享数据,可以将Android程序的数据提供给插件。因此,在本发明的一个实施例中,图1所示方法的步骤S110中,在Android程序的配置文件中预留进程是指:利用Android程序的AndroidManifest.xml文件中的标签预先声明ContentProvider以及对应的进程,即以ContentProvider的形式来展现Android程序中预留的多个进程。在此基础上,与之对应地,图1所示方法的步骤S140中,启动可用进程,使得插件在该进程中运行是指:通过调用预先声明的与可用进程对应的ContentProvider,启动该可用进程,使得插件在该进程中运行。
[0061] 例如,在Android程序的AndroidManifest.xml文件中声明标签属性,代码如下所示:
[0062]
[0063] 其中,android:name声明了为Android程序实现ContentProvider子类的全名;android:authorities声明了ContentProvider,调用者可以通过该标识来找到它;
android:process声明了ContentProvider运行的进程名。可以看到,本例中在Android程序的AndroidManifest.xml文件设置了两个不同的标签,即预先声明了两个ContentProvider组件:com.qihoo360.mobilesafe.loader.p.Provider0和
com.qihoo360.mobilesafe.loader.p.Provider1,分别运行在loader0进程和loader1进程中。预留进程的注册比较简单,只需要在代码中写死原在AndroidManifest.xml中的进程即可,在应用程序或插件启动时通过Application.onCreate方法调用。
[0064] 因此在本例中,在Android程序的配置文件中预留loader0进程和loader1进程;若其中loader1是可用进程,则将该进程分配给当前请求分配进程的插件,并通过调用预先声明 的 与 可 用 进 程 对 应 的 C o n t e n t P r o v i d e r :com.qihoo360.mobilesafe.loader.p.Provider1,启动loader1进程,使得插件在loader1进程中运行。
[0065] 进一步地,在本发明的一个实施例中,图1所示的方法还在Android程序的配置文件中实时记录更新该Android程序的各进程的进程信息,包括预留进程的进程信息,也包括其他正常创建的进程的进程信息。其中,进程信息包括以下信息中的一个或多个:
[0066] (1)进程编号:为附在进程名中的编号,如上例中,进程loader0的编号为0,进程loader1的编号为1,以此类推。
[0067] (2)进程状态:按照一个进程的生命周期来看,包括未分配状态、已分配未启动状态 、启 动 状 态 、暂 停 状 态 和 停 止 状 态 ;当 系 统 启 动 时 ,会 通 过Application.attachBaseContext方法初始化各进程的上述信息,进程的进程状态为未分配状态;当一个进程被分配给运行对象时,会通过Application.onCreate方法初始化该进程的其他信息,并将进程状态设置为已分配未启动状态。
[0068] (3)进程启动/修改状态的时间。
[0069] (4)进程对应的插件名:进程中运行的插件名。
[0070] (5)进程的ID标识:是各进程的身份标识,进程一启动系统就会自动分配给进程一个独一无二的ID,进程停止后ID被系统回收,Android系统中一般不会把已经回收的进程ID重新分配给新的进程,新产生的ID一般比之前的大。
[0071] (6)进程中运行组件的数量:包括进程中运行Activity的数量、进程中运行Service的数量和进程中运行Service-Binder的数量等;例如,在进程中创建一个Service,需要在调用Service.onCreate方法时修改进程信息,将表示进程中运行Service的数量的变量加1;在进程中销毁一个Service,需要在调用Service.onDestroy方法时修改进程信息,将表示进程中运行Service的数量的变量减1;Service绑定或解绑时,类似,将表示进程中运行Service-Binder的数量的变量加1或减1;依次类推。
[0072] 在Android程序的配置文件记录上述信息的基础上,在本发明的一个实施例中,当一个Android程序中的插件请求分配进程时,将该插件放入待分配的插件列表中,待分配的插件列表中包括如下一个或多个插件相关的插件信息:插件名、插件版本、插件唯一标识、插件下载地址、插件大小、插件简介、适配主程序、最低版本和兼容版本等。图1所示方法在判断预留的进程中是否存在可用进程之前,进一步包括:遍历Android程序的所有进程(ALL对象),根据各进程的进程信息,根据待分配插件的插件信息,判断是否存在已分配给该插件的进程;是则直接令插件在该已分配给所述插件的进程中运行,不再执行判断预留的进程中是否存在可用进程的操作。其中,根据各进程的进程信息,判断是否存在已分配给该插件的进程可以是:如果一个进程对应的插件名与当前请求分配进程的插件名相同,则无需再分配,直接令插件在该已分配给该插件的进程中运行。
[0073] 其中,本文中所述的插件的来源可以是:服务器中预存有与Android程序适配的多个插件信息的插件列表。此外,云端服务器还预先收集了各种可能出现的操作系统特征信息以及对应的插件信息,以便于通过将操作系统平台信息与这些预先收集的特征信息进行匹配比较,找到与操作系统平台信息匹配的特征信息,与所述特征信息对应的插件即为适合当前操作系统的插件。随后,获得所述操作系统适配的插件之后,服务器可以将插件下载地址返回给插件加载系统。例如,服务器可以返回插件的配置结构,其中包括了URL节点,该URL节点即为该插件的下载地址。
[0074] 本实施例说明了查找是否存在老版本的插件对应的启动进程的过程,如果存在,则使用该进程进行插件的启动。
[0075] 如果Android程序的所有进程中不存在已分配给所述插件的进程,则继续判断预留的进程中是否存在可用进程。在本发明的一个实施例中,图1所示方法的步骤S120判断预留的进程中是否存在可用进程包括:遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程;如果存在一个闲置进程,则将该闲置进程作为可用进程;如果存在多个闲置进程,则选择其中最早启动的进程作为可用进程。
[0076] 图2示出了根据本发明一个实施例的一种判断是否存在闲置进程的方法的流程图,该流程图将详细说明上述的遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程的过程。如图2所示,该方法包括:
[0077] 步骤S210,遍历所有预留的进程,判断是否存在处于未启动状态的预留的进程,是则执行步骤S220,否则执行步骤S230。
[0078] 本步骤中,处于未启动状态的进程包括处于未分配状态和已分配未启动状态的进程,是优先级最低的进程,因此该进程可以作为闲置进程。
[0079] 步骤S220,强制回收该进程,重新创建该进程作为闲置进程。
[0080] 本步骤的目的是确保进程内部纯净,如果不回收进程就启动的话,可能进程中还依然残留之前的运行对象,可能会出现各种意料不到的问题,如Resource Manager(资源管理)冲突等。
[0081] 步骤S230,判断是否存在处于停止状态的预留的进程,是则执行步骤S220,否则执行步骤S240。
[0082] 本步骤中,如果进程处于停止状态,可判断该进程中的运行对象已停止运行,因此该进程可以作为闲置进程。
[0083] 步骤S240,判断是否存在处于暂停状态且距离上次启动已超过指定时间的预留的进程,是则执行步骤S220,否则执行步骤S250。
[0084] 本步骤中,如果进程处于暂停状态且距离上次启动已超过指定时间,可判断由于某些原因,该进程中的运行对象不再运行了,因此该进程可以作为闲置进程。
[0085] 步骤S250,判断是否存在处于启动状态且距离上次使用Activity、Service和Binder均已超过指定时间的预留的进程,是则执行步骤S220,否则执行步骤S260。
[0086] 本步骤中,虽然进程处于启动状态,但如果其中的三大组件均已停止运行超过指定时间,可判断该进程中的运行对象不很重要。该进程的优先级较低,因此可以作为闲置进程。
[0087] 步骤S260,强制回收最早启动的预留的进程,重新创建该回收的最早启动的预留的进程作为闲置进程。
[0088] 本步骤中,经过上述判断过程,获知所有的预留的进程都处于运行状态,按照进程的生命周期来推测,最早启动的预留的进程最有可能接近停止状态,因此强制回收最早启动的预留的进程,重新创建该进程作为闲置进程。
[0089] 可见,图2所示的方法根据进程状态和进程中运行的组件的类别来判断进程的优先级,找到当前情境下优先级最低的进程,强制回收并重新创建该回收的最早启动的预留的进程作为闲置进程。
[0090] 本文中,插件的来源可以是:云端服务器中预存有与Android程序适配的多个插件版本的插件列表,云端服务器还预先收集了各种可能出现的操作系统特征信息以及对应的插件版本,以便于通过将操作系统平台信息与这些预先收集的特征信息进行匹配比较,找到与操作系统平台信息匹配的特征信息,与所述特征信息对应的插件即为适合当前操作系统的插件。此时,当本地客户端向云端服务器发送插件获取请求,接着接收云端服务器根据插件列表返回的、与Android程序适配的插件版本。进一步,在获得所述操作系统适配的插件之后,云端服务器可以将插件下载地址返回给插件加载系统。例如,服务器可以返回插件的配置结构,其中包括了URL节点,该URL节点即为该插件的下载地址。此外,云端服务器还将插件名、插件的各插件版本所能使用的最低接口版本和最高接口版本返回给插件加载系统,以便用于后续的加载工作。
[0091] 图3示出了根据本发明一个实施例的一种Android程序中的进程管理装置的示意图。如图3所示,该Android程序中的进程管理装置300包括:
[0092] 配置单元310,适于在Android程序的配置文件中预留一个或多个进程。
[0093] 判断单元320,适于当Android程序中的插件首次运行时,判断预留的进程中是否存在可用进程;是则通知进程分配单元330。
[0094] 进程分配单元330,适于将可用进程分配给插件;并启动可用进程,使得插件在该可用进程中运行。
[0095] 可见,图3所示的装置通过各单元的相互配合,对Android程序的配置文件的预先设置,预留一个或多个进程,当插件请求分配进程时,无需重新配置Android程序,直接从预留的进程中选择空闲进程分配给插件,使得插件在进程中得以运行,实现了插件在独立进程中的自由使用。本方案在保证进程分配互不干扰的同时,提出了一种有效、合理、巧妙且符合分配需求的Android程序中的进程管理装置,无需过多干预,能够大幅度减少Android系统的内存占用,并且由于主程序无需升级,而所扩展的活动组件又便于被打包处理成插件功能模块,因此,每次进行升级时,只需下载相应的插件功能模块即可。这就真正做到了最小化安装,大大节省流量,又不需大量消耗终端的资源,既省流量又能高效运行。
[0096] 在本发明的一个实施例中,图3所示装置的配置单元310,适于利用Android程序的AndroidManifest.xml文件中的标签预先声明ContentProvider以及对应的进程。在此基础上,与之对应地,进程分配单元330,适于通过调用预先声明的与可用进程对应的ContentProvider,启动该可用进程,使得插件在该进程中运行。具体的实施例在上文中已详细说明,在此不再赘述。
[0097] 进一步地,在本发明的一个实施例中,图3所示装置的配置单元310还在Android程序的配置文件中实时记录更新该Android程序的各进程的进程信息,包括预留进程的进程信息,也包括其他正常创建的进程的进程信息。其中,进程信息包括以下信息中的一个或多个:进程编号、进程状态、进程启动/修改状态的时间、进程对应的插件名、进程的ID标识、进程中运行Activity的数量、进程中运行Service的数量和进程中运行Service-Binder的数量。
[0098] 在Android程序的配置文件记录上述信息的基础上,在本发明的一个实施例中,当一个Android程序中的插件请求分配进程时,图3所示装置的判断单元320在判断预留的进程中是否存在可用进程之前,进一步适于遍历Android程序的所有进程,根据各进程的进程信息,判断是否存在已分配给该插件的进程;是则直接通知进程分配单元330,不再执行判断预留的进程中是否存在可用进程的操作;进程分配单元330,适于令插件在该进程中运行。其中,根据各进程的进程信息,判断是否存在已分配给该插件的进程可以是:如果一个进程对应的插件名与当前请求分配进程的插件名相同,则无需再分配,直接令插件在该已分配给该插件的进程中运行。
[0099] 如果Android程序的所有进程中不存在已分配给所述插件的进程,则继续判断预留的进程中是否存在可用进程。在本发明的一个实施例中,图3所示装置的判断单元320适于遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程;如果存在一个闲置进程,则将该闲置进程作为可用进程;如果存在多个闲置进程,则选择其中最早启动的进程作为可用进程。进一步地,判断单元320还适于在不存在闲置进程时,强制回收最早启动的预留的进程,重新创建该回收的最早启动的预留的进程作为可用进程。
[0100] 其中,判断单元320遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程是指:判断单元320,适于遍历所有预留的进程,根据各进程的进程信息,判断是否存在处于未启动状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;否则判断是否存在处于停止状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;否则判断是否存在处于暂停状态且距离上次启动已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;否则判断是否存在处于启动状态且距离上次使用Activity、Service和Binder均已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程。
[0101] 综上所述,本发明提供的技术方案通过对Android程序的配置文件的预先设置,预留一个或多个进程,当插件请求分配进程时,无需重新配置Android程序,直接从预留的进程中选择空闲进程分配给插件,使得插件在进程中得以运行,实现了插件在独立进程中的自由使用。与现有技术相比,首先,本发明在保证进程分配互不干扰的同时,提出了一种有效、合理、巧妙且符合分配需求的Android程序中的进程管理方案,无需过多干预,能够大幅度减少Android系统的内存占用,并且由于主程序无需升级,而所扩展的活动组件又便于被打包处理成插件功能模块,因此,每次进行升级时,只需下载相应的插件功能模块即可。这就真正做到了最小化安装,大大节省流量,又不需大量消耗终端的资源,既省流量又能高效运行。其次,本发明使得插件功能模块可以标准化实现,由此便可以简化应用分发系统的云端实现,有利于不同应用程序之间的资源共享。不同应用程序之间只要构建了实施本发明的架构,即可通过下载一些共通的插件功能模块来实现同一的功能,显然大大减轻了开发者的劳动,也简化了服务器的程序资源的复杂度。
[0102] 需要说明的是:
[0103] 在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0104] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0105] 类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0106] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0107] 此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0108] 本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一种Android程序中的进程管理装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0109] 应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0110] 本发明公开了A1、一种Android程序中的进程管理方法,其中,该方法包括:
[0111] 在所述Android程序的配置文件中预留一个或多个进程;
[0112] 当所述Android程序中的插件请求分配进程时,判断预留的进程中是否存在可用进程;
[0113] 是则将所述可用进程分配给所述插件;
[0114] 启动所述可用进程,使得所述插件在该可用进程中运行。
[0115] A2、如A1所述的方法,其中,该方法进一步包括:
[0116] 在所述Android程序的配置文件中实时记录更新所述Android程序的各进程的进程信息。
[0117] A3、如A2所述的方法,其中,所述进程信息包括以下信息中的一个或多个:
[0118] 进程编号、进程状态、进程启动/修改状态的时间、进程对应的插件名、进程的ID标识、进程中运行Activity的数量、进程中运行Service的数量和进程中运行Service-Binder的数量。
[0119] A4、如A1所述的方法,其中,所述在所述Android程序的配置文件中预留一个或多个进程为:
[0120] 利用所述Android程序的AndroidManifest.xml文件中的标签预先声明Content Provider以及对应的进程。
[0121] A5、如A4所述的方法,其中,所述启动所述可用进程是指:
[0122] 通过调用预先声明的与所述可用进程对应的ContentProvider,启动所述可用进程。
[0123] A6、如A1所述的方法,其中,在所述判断预留的进程中是否存在可用进程之前,该方法进一步包括:
[0124] 遍历所述Android程序的所有进程,根据各进程的进程信息,判断是否存在已分配给所述插件的进程;
[0125] 是则直接令所述插件在该已分配给该插件的进程中运行,不再执行所述判断预留的进程中是否存在可用进程的操作。
[0126] A7、如A6所述的方法,其中,所述判断预留的进程中是否存在可用进程包括:
[0127] 遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程;
[0128] 如果存在一个闲置进程,则将该闲置进程作为可用进程;
[0129] 如果存在多个闲置进程,则选择其中最早启动的进程作为可用进程。
[0130] A8、如A7所述的方法,其中,所述判断预留的进程中是否存在可用进程进一步包括:
[0131] 如果不存在闲置进程,则强制回收最早启动的预留的进程,重新创建该回收的最早启动的预留的进程作为可用进程。
[0132] A9、如A7所述的方法,其中,所述遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程包括:
[0133] 遍历所有预留的进程,判断是否存在处于未启动状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;
[0134] 否则判断是否存在处于停止状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;
[0135] 否则判断是否存在处于暂停状态且距离上次启动已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;
[0136] 否则判断是否存在处于启动状态且距离上次使用Activity、Service和Binder均已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程。
[0137] 本发明还公开了B10、一种Android程序中的进程管理装置,其中,该装置包括:
[0138] 配置单元,适于在所述Android程序的配置文件中预留一个或多个进程;
[0139] 判断单元,适于当所述Android程序中的插件首次运行时,判断预留的进程中是否存在可用进程;是则通知进程分配单元;
[0140] 所述进程分配单元,适于将所述可用进程分配给所述插件;并启动所述可用进程,使得所述插件在该进程中运行。
[0141] B11、如B10所述的装置,其中,
[0142] 所述配置单元,进一步适于在所述Android程序的配置文件中实时记录更新所述Android程序的各进程的进程信息。
[0143] B12、如B11所述的装置,其中,所述进程信息包括以下信息中的一个或多个:
[0144] 进程编号、进程状态、进程启动/修改状态的时间、进程对应的插件名、进程的ID标识、进程中运行Activity的数量、进程中运行Service的数量和进程中运行Service-Binder的数量。
[0145] B13、如B10所述的装置,其中,
[0146] 所述配置单元,适于利用所述Android程序的AndroidManifest.xml文件中的标签预先声明Content Provider以及对应的进程。
[0147] B14、如B13所述的装置,其中,
[0148] 所述进程分配单元,适于通过调用预先声明的与所述可用进程对应的ContentProvider,启动所述可用进程。
[0149] B15、如B10所述的装置,其中,
[0150] 所述判断单元,进一步适于在所述判断预留的进程中是否存在可用进程之前,遍历所述Android程序的所有进程,根据各进程的进程信息,判断是否存在已分配给所述插件的进程;是则直接通知所述进程分配单元,不再执行所述判断预留的进程中是否存在可用进程的操作;
[0151] 所述进程分配单元,适于令所述插件在该已分配给所述插件的进程中运行。
[0152] B16、如B15所述的装置,其中,
[0153] 所述判断单元,适于遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程;如果存在一个闲置进程,则将该闲置进程作为可用进程;如果存在多个闲置进程,则选择其中最早启动的进程作为可用进程。
[0154] B17、如B16所述的装置,其中,
[0155] 所述判断单元,进一步适于在不存在闲置进程时,强制回收最早启动的预留的进程,重新创建该回收的最早启动的预留的进程作为可用进程。
[0156] B18、如B16所述的装置,其中,
[0157] 所述判断单元,适于遍历所有预留的进程,根据各进程的进程信息,判断是否存在处于未启动状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;否则判断是否存在处于停止状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;否则判断是否存在处于暂停状态且距离上次启动已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;否则判断是否存在处于启动状态且距离上次使用Activity、Service和Binder均已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈