CN104750555A - 一种Android程序中的进程管理方法和装置 - Google Patents

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

Info

Publication number
CN104750555A
CN104750555A CN201510148429.XA CN201510148429A CN104750555A CN 104750555 A CN104750555 A CN 104750555A CN 201510148429 A CN201510148429 A CN 201510148429A CN 104750555 A CN104750555 A CN 104750555A
Authority
CN
China
Prior art keywords
plug
unit
android program
reserved
available
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510148429.XA
Other languages
English (en)
Other versions
CN104750555B (zh
Inventor
宋照春
张炅轩
姚彤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201510148429.XA priority Critical patent/CN104750555B/zh
Publication of CN104750555A publication Critical patent/CN104750555A/zh
Application granted granted Critical
Publication of CN104750555B publication Critical patent/CN104750555B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

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

Description

一种Android程序中的进程管理方法和装置
技术领域
本发明涉及移动终端技术领域,具体涉及一种Android程序中的进程管理方法和装置。
背景技术
随着Android系统的迅猛发展,它已经成为全球范围内具有广泛影响力的操作系统之一,被越来越广泛地应用于手机、PAD、可佩带设备等移动终端,这也造就了Android开发需求的快速增长。
现有技术中,一款Android应用程序的功能的扩展,依赖于插件的使用,插件需要使用的进程都需要在主程序的配置文件AndroidManifest.xml中写死。因此当Android应用程序需要通过增加一个插件来扩展某个功能时,由于Android程序只能占用其配置文件中已声明的进程,因此,先要对该Android程序的进程进行新的调配,并对配置文件进行整体的更新升级。在该种机制下,导致各个插件的进程分配的相互干扰,难以实现插件在独立进程中的自由使用,使得Android程序中的进程管理呈现低效、复杂、占用系统内存、不符合应用需求的劣势;对于用户开说,加载插件时需要下载一个完整的APK进行更新,操作过程繁琐,不符合用户需求。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种Android程序中的进程管理方法和装置。
依据本发明的一个方面,提供了一种Android程序中的进程管理方法,该方法包括:
在所述Android程序的配置文件中预留一个或多个进程;
当所述Android程序中的插件请求分配进程时,判断预留的进程中是否存在可用进程;
是则,将所述可用进程分配给所述插件;
启动所述可用进程,使得所述插件在该进程中运行。
可选地,该方法进一步包括:
在所述Android程序的配置文件中实时记录更新所述Android程序的各进程的进程信息。
可选地,所述进程信息包括以下信息中的一个或多个:
进程编号、进程状态、进程启动/修改状态的时间、进程对应的插件名、进程的ID标识、进程中运行Activity的数量、进程中运行Service的数量和进程中运行Service-Binder的数量。
可选地,所述在所述Android程序的配置文件中预留进程为:
利用所述Android程序的AndroidManifest.xml文件中的<provider>标签预先声明Content Provider以及对应的进程。
可选地,所述启动所述可用进程是指:
通过调用预先声明的与所述可用进程对应的ContentProvider,启动所述可用进程。
可选地,在所述判断预留的进程中是否存在可用进程之前,该方法进一步包括:
遍历所述Android程序的所有进程,根据各进程的进程信息,判断是否存在已分配给所述插件的进程;
是则,直接令所述插件在该进程中运行,不再执行所述判断预留的进程中是否存在可用进程的操作。
可选地,所述判断预留的进程中是否存在可用进程包括:
遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程;
如果存在一个闲置进程,则将该闲置进程作为可用进程;
如果存在多个闲置进程,则选择其中最早启动的进程作为可用进程。
可选地,所述判断预留的进程中是否存在可用进程进一步包括:
如果不存在闲置进程,则强制回收最早启动的预留的进程,重新创建该进程作为可用进程。
可选地,所述遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程包括:
遍历所有预留的进程,判断是否存在处于未启动状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;
否则判断是否存在处于停止状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;
否则判断是否存在处于暂停状态且距离上次启动已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;
否则判断是否存在处于启动状态且距离上次使用Activity、Service和Binder均已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程。
依据本发明的另一个方面,提供了一种Android程序中的进程管理装置,该装置包括:
配置单元,适于在所述Android程序的配置文件中预留一个或多个进程;
判断单元,适于当所述Android程序中的插件首次运行时,判断预留的进程中是否存在可用进程;是则通知进程分配单元;
所述进程分配单元,适于将所述可用进程分配给所述插件;并启动所述可用进程,使得所述插件在该进程中运行。
可选地,所述配置单元,进一步适于在所述Android程序的配置文件中实时记录更新所述Android程序的各进程的进程信息。
可选地,所述进程信息包括以下信息中的一个或多个:
进程编号、进程状态、进程启动/修改状态的时间、进程对应的插件名、进程的ID标识、进程中运行Activity的数量、进程中运行Service的数量和进程中运行Service-Binder的数量。
可选地,所述配置单元,适于利用所述Android程序的AndroidManifest.xml文件中的<provider>标签预先声明Content Provider以及对应的进程。
可选地,所述进程分配单元,适于通过调用预先声明的与所述可用进程对应的ContentProvider,启动所述可用进程。
可选地,所述判断单元,进一步适于在所述判断预留的进程中是否存在可用进程之前,遍历所述Android程序的所有进程,根据各进程的进程信息,判断是否存在已分配给所述插件的进程;是则直接通知所述进程分配单元,不再执行所述判断预留的进程中是否存在可用进程的操作;
所述进程分配单元,适于令所述插件在该进程中运行。
可选地,所述判断单元,适于遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程;如果存在一个闲置进程,则将该闲置进程作为可用进程;如果存在多个闲置进程,则选择其中最早启动的进程作为可用进程。
可选地,所述判断单元,进一步适于在不存在闲置进程时,强制回收最早启动的预留的进程,重新创建该进程作为可用进程。
可选地,所述判断单元,适于遍历所有预留的进程,根据各进程的进程信息,判断是否存在处于未启动状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;否则判断是否存在处于停止状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;否则判断是否存在处于暂停状态且距离上次启动已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;否则判断是否存在处于启动状态且距离上次使用Activity、Service和Binder均已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程。
由上述可知,本发明提供的技术方案通过对Android程序的配置文件的预先设置,预留一个或多个进程,当插件请求分配进程时,无需重新配置Android程序,直接从预留的进程中选择空闲进程分配给插件,使得插件在进程中得以运行,实现了插件在独立进程中的自由使用。本发明在保证进程分配互不干扰的同时,提出了一种有效、合理、巧妙且符合分配需求的Android程序中的进程管理方案,无需过多干预,能够大幅度减少Android系统的内存占用。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种Android程序中的进程管理方法的流程图;
图2示出了根据本发明一个实施例的一种判断是否存在闲置进程的方法的流程图;
图3示出了根据本发明一个实施例的一种Android程序中的进程管理装置的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的一种Android程序中的进程管理方法的流程图。如图1所示,该方法包括:
步骤S110,在Android程序的配置文件中预留一个或多个进程。
步骤S120,当Android程序中的插件请求分配进程时,判断预留的进程中是否存在可用进程。
步骤S130,是则,将可用进程分配给插件。
步骤S140,启动可用进程,使得插件在该进程中运行。
可见,图1所示的方法通过对Android程序的配置文件的预先设置,预留一个或多个进程,当插件请求分配进程时,无需重新配置Android程序,直接从预留的进程中选择空闲进程分配给插件,使得插件在进程中得以运行,实现了插件在独立进程中的自由使用。本方案在保证进程分配互不干扰的同时,提出了一种有效、合理、巧妙且符合分配需求的Android程序中的进程管理方法,无需过多干预,能够大幅度减少Android系统的内存占用,并且由于主程序无需升级,而所扩展的活动组件又便于被打包处理成插件功能模块,因此,每次进行升级时,只需下载相应的插件功能模块即可。这就真正做到了最小化安装,大大节省流量,又不需大量消耗终端的资源,既省流量又能高效运行。
在本发明的实施例中,Android程序可以是某主程序,即宿主程序,如360手机卫士等;插件可以是指附属程序,如360手机卫士中的“防盗”插件、“开机加速”插件、“日历”插件等。
AndroidManifest.xml是Android程序的核心配置文件,位于整个项目的根目录,声明了Android程序中所用到的组件,包括它们各自的实现类,能被处理的数据和启动位置等。ContentProvider是Android程序的四大组件之一,作为内容提供者支持多个Android程序共享数据,可以将Android程序的数据提供给插件。因此,在本发明的一个实施例中,图1所示方法的步骤S110中,在Android程序的配置文件中预留进程是指:利用Android程序的AndroidManifest.xml文件中的<provider>标签预先声明ContentProvider以及对应的进程,即以ContentProvider的形式来展现Android程序中预留的多个进程。在此基础上,与之对应地,图1所示方法的步骤S140中,启动可用进程,使得插件在该进程中运行是指:通过调用预先声明的与可用进程对应的ContentProvider,启动该可用进程,使得插件在该进程中运行。
例如,在Android程序的AndroidManifest.xml文件中声明<provider>标签属性,代码如下所示:
其中,android:name声明了为Android程序实现ContentProvider子类的全名;android:authorities声明了ContentProvider,调用者可以通过该标识来找到它;android:process声明了ContentProvider运行的进程名。可以看到,本例中在Android程序的AndroidManifest.xml文件设置了两个不同的<provider>标签,即预先声明了两个ContentProvider组件:com.qihoo360.mobilesafe.loader.p.Provider0和com.qihoo360.mobilesafe.loader.p.Provider1,分别运行在loader0进程和loader1进程中。预留进程的注册比较简单,只需要在代码中写死原在AndroidManifest.xml中的进程即可,在应用程序或插件启动时通过Application.onCreate方法调用。
因此在本例中,在Android程序的配置文件中预留loader0进程和loader1进程;若其中loader1是可用进程,则将该进程分配给当前请求分配进程的插件,并通过调用预先声明的与可用进程对应的ContentProvider:com.qihoo360.mobilesafe.loader.p.Provider1,启动loader1进程,使得插件在loader1进程中运行。
进一步地,在本发明的一个实施例中,图1所示的方法还在Android程序的配置文件中实时记录更新该Android程序的各进程的进程信息,包括预留进程的进程信息,也包括其他正常创建的进程的进程信息。其中,进程信息包括以下信息中的一个或多个:
(1)进程编号:为附在进程名中的编号,如上例中,进程loader0的编号为0,进程loader1的编号为1,以此类推。
(2)进程状态:按照一个进程的生命周期来看,包括未分配状态、已分配未启动状态、启动状态、暂停状态和停止状态;当系统启动时,会通过Application.attachBaseContext方法初始化各进程的上述信息,进程的进程状态为未分配状态;当一个进程被分配给运行对象时,会通过Application.onCreate方法初始化该进程的其他信息,并将进程状态设置为已分配未启动状态。
(3)进程启动/修改状态的时间。
(4)进程对应的插件名:进程中运行的插件名。
(5)进程的ID标识:是各进程的身份标识,进程一启动系统就会自动分配给进程一个独一无二的ID,进程停止后ID被系统回收,Android系统中一般不会把已经回收的进程ID重新分配给新的进程,新产生的ID一般比之前的大。
(6)进程中运行组件的数量:包括进程中运行Activity的数量、进程中运行Service的数量和进程中运行Service-Binder的数量等;例如,在进程中创建一个Service,需要在调用Service.onCreate方法时修改进程信息,将表示进程中运行Service的数量的变量加1;在进程中销毁一个Service,需要在调用Service.onDestroy方法时修改进程信息,将表示进程中运行Service的数量的变量减1;Service绑定或解绑时,类似,将表示进程中运行Service-Binder的数量的变量加1或减1;依次类推。
在Android程序的配置文件记录上述信息的基础上,在本发明的一个实施例中,当一个Android程序中的插件请求分配进程时,将该插件放入待分配的插件列表中,待分配的插件列表中包括如下一个或多个插件相关的插件信息:插件名、插件版本、插件唯一标识、插件下载地址、插件大小、插件简介、适配主程序、最低版本和兼容版本等。图1所示方法在判断预留的进程中是否存在可用进程之前,进一步包括:遍历Android程序的所有进程(ALL对象),根据各进程的进程信息,根据待分配插件的插件信息,判断是否存在已分配给该插件的进程;是则,直接令插件在该进程中运行,不再执行判断预留的进程中是否存在可用进程的操作。其中,根据各进程的进程信息,判断是否存在已分配给该插件的进程可以是:如果一个进程对应的插件名与当前请求分配进程的插件名相同,则无需再分配,直接令插件在该进程中运行。
其中,本文中所述的插件的来源可以是:云端服务器中预存有与Android程序适配的多个插件信息的插件列表。此外,云端服务器还预先收集了各种可能出现的操作系统特征信息以及对应的插件信息,以便于通过将操作系统平台信息与这些预先收集的特征信息进行匹配比较,找到与操作系统平台信息匹配的特征信息,与所述特征信息对应的插件即为适合当前操作系统的插件。随后,获得所述操作系统适配的插件之后,服务器可以将插件下载地址返回给插件加载系统。例如,服务器可以返回插件的配置结构,其中包括了URL节点,该URL节点即为该插件的下载地址。
本实施例说明了查找是否存在老版本的插件对应的启动进程的过程,如果存在,则使用该进程进行插件的启动。
如果Android程序的所有进程中不存在已分配给所述插件的进程,则继续判断预留的进程中是否存在可用进程。在本发明的一个实施例中,图1所示方法的步骤S120判断预留的进程中是否存在可用进程包括:遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程;如果存在一个闲置进程,则将该闲置进程作为可用进程;如果存在多个闲置进程,则选择其中最早启动的进程作为可用进程。
图2示出了根据本发明一个实施例的一种判断是否存在闲置进程的方法的流程图,该流程图将详细说明上述的遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程的过程。如图2所示,该方法包括:
步骤S210,遍历所有预留的进程,判断是否存在处于未启动状态的预留的进程,是则执行步骤S220,否则执行步骤S230。
本步骤中,处于未启动状态的进程包括处于未分配状态和已分配未启动状态的进程,是优先级最低的进程,因此该进程可以作为闲置进程。
步骤S220,强制回收该进程,重新创建该进程作为闲置进程。
本步骤的目的是确保进程内部纯净,如果不回收进程就启动的话,可能进程中还依然残留之前的运行对象,可能会出现各种意料不到的问题,如Resource Manager(资源管理)冲突等。
步骤S230,判断是否存在处于停止状态的预留的进程,是则执行步骤S220,否则执行步骤S240。
本步骤中,如果进程处于停止状态,可判断该进程中的运行对象已停止运行,因此该进程可以作为闲置进程。
步骤S240,判断是否存在处于暂停状态且距离上次启动已超过指定时间的预留的进程,是则执行步骤S220,否则执行步骤S250。
本步骤中,如果进程处于暂停状态且距离上次启动已超过指定时间,可判断由于某些原因,该进程中的运行对象不再运行了,因此该进程可以作为闲置进程。
步骤S250,判断是否存在处于启动状态且距离上次使用Activity、Service和Binder均已超过指定时间的预留的进程,是则执行步骤S220,否则执行步骤S260。
本步骤中,虽然进程处于启动状态,但如果其中的三大组件均已停止运行超过指定时间,可判断该进程中的运行对象不很重要。该进程的优先级较低,因此可以作为闲置进程。
步骤S260,强制回收最早启动的预留的进程,重新创建该进程作为闲置进程。
本步骤中,经过上述判断过程,获知所有的预留的进程都处于运行状态,按照进程的生命周期来推测,最早启动的预留的进程最有可能接近停止状态,因此强制回收最早启动的预留的进程,重新创建该进程作为闲置进程。
可见,图2所示的方法根据进程状态和进程中运行的组件的类别来判断进程的优先级,找到当前情境下优先级最低的进程,强制回收并重新创建该进程作为闲置进程。
本文中,插件的来源可以是:云端服务器中预存有与Android程序适配的多个插件版本的插件列表,云端服务器还预先收集了各种可能出现的操作系统特征信息以及对应的插件版本,以便于通过将操作系统平台信息与这些预先收集的特征信息进行匹配比较,找到与操作系统平台信息匹配的特征信息,与所述特征信息对应的插件即为适合当前操作系统的插件。此时,当本地客户端向云端服务器发送插件获取请求,接着接收云端服务器根据插件列表返回的、与Android程序适配的插件版本。进一步,在获得所述操作系统适配的插件之后,云端服务器可以将插件下载地址返回给插件加载系统。例如,服务器可以返回插件的配置结构,其中包括了URL节点,该URL节点即为该插件的下载地址。此外,云端服务器还将插件名、插件的各插件版本所能使用的最低接口版本和最高接口版本返回给插件加载系统,以便用于后续的加载工作。
图3示出了根据本发明一个实施例的一种Android程序中的进程管理装置的示意图。如图3所示,该Android程序中的进程管理装置300包括:
配置单元310,适于在Android程序的配置文件中预留一个或多个进程。
判断单元320,适于当Android程序中的插件首次运行时,判断预留的进程中是否存在可用进程;是则通知进程分配单元330。
进程分配单元330,适于将可用进程分配给插件;并启动可用进程,使得插件在该进程中运行。
可见,图3所示的装置通过各单元的相互配合,对Android程序的配置文件的预先设置,预留一个或多个进程,当插件请求分配进程时,无需重新配置Android程序,直接从预留的进程中选择空闲进程分配给插件,使得插件在进程中得以运行,实现了插件在独立进程中的自由使用。本方案在保证进程分配互不干扰的同时,提出了一种有效、合理、巧妙且符合分配需求的Android程序中的进程管理装置,无需过多干预,能够大幅度减少Android系统的内存占用,并且由于主程序无需升级,而所扩展的活动组件又便于被打包处理成插件功能模块,因此,每次进行升级时,只需下载相应的插件功能模块即可。这就真正做到了最小化安装,大大节省流量,又不需大量消耗终端的资源,既省流量又能高效运行。
在本发明的一个实施例中,图3所示装置的配置单元310,适于利用Android程序的AndroidManifest.xml文件中的<provider>标签预先声明ContentProvider以及对应的进程。在此基础上,与之对应地,进程分配单元330,适于通过调用预先声明的与可用进程对应的ContentProvider,启动该可用进程,使得插件在该进程中运行。具体的实施例在上文中已详细说明,在此不再赘述。
进一步地,在本发明的一个实施例中,图3所示装置的配置单元310还在Android程序的配置文件中实时记录更新该Android程序的各进程的进程信息,包括预留进程的进程信息,也包括其他正常创建的进程的进程信息。其中,进程信息包括以下信息中的一个或多个:进程编号、进程状态、进程启动/修改状态的时间、进程对应的插件名、进程的ID标识、进程中运行Activity的数量、进程中运行Service的数量和进程中运行Service-Binder的数量。
在Android程序的配置文件记录上述信息的基础上,在本发明的一个实施例中,当一个Android程序中的插件请求分配进程时,图3所示装置的判断单元320在判断预留的进程中是否存在可用进程之前,进一步适于遍历Android程序的所有进程,根据各进程的进程信息,判断是否存在已分配给该插件的进程;是则直接通知进程分配单元330,不再执行判断预留的进程中是否存在可用进程的操作;进程分配单元330,适于令插件在该进程中运行。其中,根据各进程的进程信息,判断是否存在已分配给该插件的进程可以是:如果一个进程对应的插件名与当前请求分配进程的插件名相同,则无需再分配,直接令插件在该进程中运行。
如果Android程序的所有进程中不存在已分配给所述插件的进程,则继续判断预留的进程中是否存在可用进程。在本发明的一个实施例中,图3所示装置的判断单元320适于遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程;如果存在一个闲置进程,则将该闲置进程作为可用进程;如果存在多个闲置进程,则选择其中最早启动的进程作为可用进程。进一步地,判断单元320还适于在不存在闲置进程时,强制回收最早启动的预留的进程,重新创建该进程作为可用进程。
其中,判断单元320遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程是指:判断单元320,适于遍历所有预留的进程,根据各进程的进程信息,判断是否存在处于未启动状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;否则判断是否存在处于停止状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;否则判断是否存在处于暂停状态且距离上次启动已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;否则判断是否存在处于启动状态且距离上次使用Activity、Service和Binder均已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程。
综上所述,本发明提供的技术方案通过对Android程序的配置文件的预先设置,预留一个或多个进程,当插件请求分配进程时,无需重新配置Android程序,直接从预留的进程中选择空闲进程分配给插件,使得插件在进程中得以运行,实现了插件在独立进程中的自由使用。与现有技术相比,首先,本发明在保证进程分配互不干扰的同时,提出了一种有效、合理、巧妙且符合分配需求的Android程序中的进程管理方案,无需过多干预,能够大幅度减少Android系统的内存占用,并且由于主程序无需升级,而所扩展的活动组件又便于被打包处理成插件功能模块,因此,每次进行升级时,只需下载相应的插件功能模块即可。这就真正做到了最小化安装,大大节省流量,又不需大量消耗终端的资源,既省流量又能高效运行。其次,本发明使得插件功能模块可以标准化实现,由此便可以简化应用分发系统的云端实现,有利于不同应用程序之间的资源共享。不同应用程序之间只要构建了实施本发明的架构,即可通过下载一些共通的插件功能模块来实现同一的功能,显然大大减轻了开发者的劳动,也简化了服务器的程序资源的复杂度。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一种Android程序中的进程管理装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了A1、一种Android程序中的进程管理方法,其中,该方法包括:
在所述Android程序的配置文件中预留一个或多个进程;
当所述Android程序中的插件请求分配进程时,判断预留的进程中是否存在可用进程;
是则,将所述可用进程分配给所述插件;
启动所述可用进程,使得所述插件在该进程中运行。
A2、如A1所述的方法,其中,该方法进一步包括:
在所述Android程序的配置文件中实时记录更新所述Android程序的各进程的进程信息。
A3、如A2所述的方法,其中,所述进程信息包括以下信息中的一个或多个:
进程编号、进程状态、进程启动/修改状态的时间、进程对应的插件名、进程的ID标识、进程中运行Activity的数量、进程中运行Service的数量和进程中运行Service-Binder的数量。
A4、如A1所述的方法,其中,所述在所述Android程序的配置文件中预留一个或多个进程为:
利用所述Android程序的AndroidManifest.xml文件中的<provider>标签预先声明Content Provider以及对应的进程。
A5、如A4所述的方法,其中,所述启动所述可用进程是指:
通过调用预先声明的与所述可用进程对应的ContentProvider,启动所述可用进程。
A6、如A1所述的方法,其中,在所述判断预留的进程中是否存在可用进程之前,该方法进一步包括:
遍历所述Android程序的所有进程,根据各进程的进程信息,判断是否存在已分配给所述插件的进程;
是则,直接令所述插件在该进程中运行,不再执行所述判断预留的进程中是否存在可用进程的操作。
A7、如A6所述的方法,其中,所述判断预留的进程中是否存在可用进程包括:
遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程;
如果存在一个闲置进程,则将该闲置进程作为可用进程;
如果存在多个闲置进程,则选择其中最早启动的进程作为可用进程。
A8、如A7所述的方法,其中,所述判断预留的进程中是否存在可用进程进一步包括:
如果不存在闲置进程,则强制回收最早启动的预留的进程,重新创建该进程作为可用进程。
A9、如A7所述的方法,其中,所述遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程包括:
遍历所有预留的进程,判断是否存在处于未启动状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;
否则判断是否存在处于停止状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;
否则判断是否存在处于暂停状态且距离上次启动已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;
否则判断是否存在处于启动状态且距离上次使用Activity、Service和Binder均已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程。
本发明还公开了B10、一种Android程序中的进程管理装置,其中,该装置包括:
配置单元,适于在所述Android程序的配置文件中预留一个或多个进程;
判断单元,适于当所述Android程序中的插件首次运行时,判断预留的进程中是否存在可用进程;是则通知进程分配单元;
所述进程分配单元,适于将所述可用进程分配给所述插件;并启动所述可用进程,使得所述插件在该进程中运行。
B11、如B10所述的装置,其中,
所述配置单元,进一步适于在所述Android程序的配置文件中实时记录更新所述Android程序的各进程的进程信息。
B12、如B11所述的装置,其中,所述进程信息包括以下信息中的一个或多个:
进程编号、进程状态、进程启动/修改状态的时间、进程对应的插件名、进程的ID标识、进程中运行Activity的数量、进程中运行Service的数量和进程中运行Service-Binder的数量。
B13、如B10所述的装置,其中,
所述配置单元,适于利用所述Android程序的AndroidManifest.xml文件中的<provider>标签预先声明Content Provider以及对应的进程。
B14、如B13所述的装置,其中,
所述进程分配单元,适于通过调用预先声明的与所述可用进程对应的ContentProvider,启动所述可用进程。
B15、如B10所述的装置,其中,
所述判断单元,进一步适于在所述判断预留的进程中是否存在可用进程之前,遍历所述Android程序的所有进程,根据各进程的进程信息,判断是否存在已分配给所述插件的进程;是则直接通知所述进程分配单元,不再执行所述判断预留的进程中是否存在可用进程的操作;
所述进程分配单元,适于令所述插件在该进程中运行。
B16、如B15所述的装置,其中,
所述判断单元,适于遍历所有预留的进程,根据各进程的进程信息,判断是否存在闲置进程;如果存在一个闲置进程,则将该闲置进程作为可用进程;如果存在多个闲置进程,则选择其中最早启动的进程作为可用进程。
B17、如B16所述的装置,其中,
所述判断单元,进一步适于在不存在闲置进程时,强制回收最早启动的预留的进程,重新创建该进程作为可用进程。
B18、如B16所述的装置,其中,
所述判断单元,适于遍历所有预留的进程,根据各进程的进程信息,判断是否存在处于未启动状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;否则判断是否存在处于停止状态的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;否则判断是否存在处于暂停状态且距离上次启动已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程;否则判断是否存在处于启动状态且距离上次使用Activity、Service和Binder均已超过指定时间的预留的进程,是则强制回收该进程,重新创建该进程作为所述闲置进程。

Claims (10)

1.一种Android程序中的进程管理方法,其中,该方法包括:
在所述Android程序的配置文件中预留一个或多个进程;
当所述Android程序中的插件请求分配进程时,判断预留的进程中是否存在可用进程;
是则,将所述可用进程分配给所述插件;
启动所述可用进程,使得所述插件在该进程中运行。
2.如权利要求1所述的方法,其中,该方法进一步包括:
在所述Android程序的配置文件中实时记录更新所述Android程序的各进程的进程信息。
3.如权利要求2所述的方法,其中,所述进程信息包括以下信息中的一个或多个:
进程编号、进程状态、进程启动/修改状态的时间、进程对应的插件名、进程的ID标识、进程中运行Activity的数量、进程中运行Service的数量和进程中运行Service-Binder的数量。
4.如权利要求1所述的方法,其中,所述在所述Android程序的配置文件中预留一个或多个进程为:
利用所述Android程序的AndroidManifest.xml文件中的<provider>标签预先声明Content Provider以及对应的进程。
5.如权利要求4所述的方法,其中,所述启动所述可用进程是指:
通过调用预先声明的与所述可用进程对应的ContentProvider,启动所述可用进程。
6.一种Android程序中的进程管理装置,其中,该装置包括:
配置单元,适于在所述Android程序的配置文件中预留一个或多个进程;
判断单元,适于当所述Android程序中的插件首次运行时,判断预留的进程中是否存在可用进程;是则通知进程分配单元;
所述进程分配单元,适于将所述可用进程分配给所述插件;并启动所述可用进程,使得所述插件在该进程中运行。
7.如权利要求6所述的装置,其中,
所述配置单元,进一步适于在所述Android程序的配置文件中实时记录更新所述Android程序的各进程的进程信息。
8.如权利要求7所述的装置,其中,所述进程信息包括以下信息中的一个或多个:
进程编号、进程状态、进程启动/修改状态的时间、进程对应的插件名、进程的ID标识、进程中运行Activity的数量、进程中运行Service的数量和进程中运行Service-Binder的数量。
9.如权利要求6所述的装置,其中,
所述配置单元,适于利用所述Android程序的AndroidManifest.xml文件中的<provider>标签预先声明Content Provider以及对应的进程。
10.如权利要求9所述的装置,其中,
所述进程分配单元,适于通过调用预先声明的与所述可用进程对应的ContentProvider,启动所述可用进程。
CN201510148429.XA 2015-03-31 2015-03-31 一种Android程序中的进程管理方法和装置 Active CN104750555B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510148429.XA CN104750555B (zh) 2015-03-31 2015-03-31 一种Android程序中的进程管理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510148429.XA CN104750555B (zh) 2015-03-31 2015-03-31 一种Android程序中的进程管理方法和装置

Publications (2)

Publication Number Publication Date
CN104750555A true CN104750555A (zh) 2015-07-01
CN104750555B CN104750555B (zh) 2018-01-23

Family

ID=53590298

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510148429.XA Active CN104750555B (zh) 2015-03-31 2015-03-31 一种Android程序中的进程管理方法和装置

Country Status (1)

Country Link
CN (1) CN104750555B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105700928A (zh) * 2016-01-15 2016-06-22 北京金山安全软件有限公司 一种控件信息展示方法、装置及电子设备
CN107291500A (zh) * 2017-06-21 2017-10-24 北京奇虎科技有限公司 启动进程的数据分配方法及装置
CN107423620A (zh) * 2017-03-12 2017-12-01 郑州云海信息技术有限公司 存储服务器服务进程的管理方法及装置
CN108170485A (zh) * 2016-12-05 2018-06-15 腾讯科技(深圳)有限公司 一种插件加载方法、装置及移动终端
CN108924128A (zh) * 2018-06-29 2018-11-30 Oppo(重庆)智能科技有限公司 一种移动终端及其进程间通信的限制方法、存储介质
CN109032812A (zh) * 2018-06-29 2018-12-18 Oppo(重庆)智能科技有限公司 一种移动终端及其进程间通信的限制方法、存储介质
CN109032674A (zh) * 2018-06-07 2018-12-18 烽火通信科技股份有限公司 一种多进程管理方法、系统及网络设备
CN109032814A (zh) * 2018-06-29 2018-12-18 Oppo(重庆)智能科技有限公司 一种移动终端及其进程间通信的监控方法、存储介质
CN109144692A (zh) * 2018-07-16 2019-01-04 北京奇虎科技有限公司 一种用于分配进程的方法、装置及终端
CN110162345A (zh) * 2019-05-05 2019-08-23 网宿科技股份有限公司 一种应用程序访问方法、装置和存储介质
CN110888684A (zh) * 2018-08-20 2020-03-17 中兴通讯股份有限公司 一种进程管理方法、终端及计算机可读存储介质
CN111427548A (zh) * 2020-03-18 2020-07-17 成都中科合迅科技有限公司 一种基于进程的插件式开发方法和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110219311A1 (en) * 2010-03-04 2011-09-08 International Business Machines Corporation Method and system for partitioning asset management plugins
CN103389900A (zh) * 2013-07-23 2013-11-13 Tcl集团股份有限公司 一种Android设备摄像头使用的控制方法及装置
CN104020999A (zh) * 2014-06-16 2014-09-03 腾讯科技(深圳)有限公司 一种应用程序的管理方法和系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110219311A1 (en) * 2010-03-04 2011-09-08 International Business Machines Corporation Method and system for partitioning asset management plugins
CN103389900A (zh) * 2013-07-23 2013-11-13 Tcl集团股份有限公司 一种Android设备摄像头使用的控制方法及装置
CN104020999A (zh) * 2014-06-16 2014-09-03 腾讯科技(深圳)有限公司 一种应用程序的管理方法和系统

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105700928A (zh) * 2016-01-15 2016-06-22 北京金山安全软件有限公司 一种控件信息展示方法、装置及电子设备
CN105700928B (zh) * 2016-01-15 2019-08-09 北京金山安全软件有限公司 一种控件信息展示方法、装置及电子设备
CN108170485A (zh) * 2016-12-05 2018-06-15 腾讯科技(深圳)有限公司 一种插件加载方法、装置及移动终端
CN107423620A (zh) * 2017-03-12 2017-12-01 郑州云海信息技术有限公司 存储服务器服务进程的管理方法及装置
CN107423620B (zh) * 2017-03-12 2020-11-24 苏州浪潮智能科技有限公司 存储服务器服务进程的管理方法及装置
CN107291500A (zh) * 2017-06-21 2017-10-24 北京奇虎科技有限公司 启动进程的数据分配方法及装置
CN109032674A (zh) * 2018-06-07 2018-12-18 烽火通信科技股份有限公司 一种多进程管理方法、系统及网络设备
CN109032674B (zh) * 2018-06-07 2021-08-24 烽火通信科技股份有限公司 一种多进程管理方法、系统及网络设备
CN109032812B (zh) * 2018-06-29 2020-10-02 Oppo(重庆)智能科技有限公司 一种移动终端及其进程间通信的限制方法、存储介质
CN108924128A (zh) * 2018-06-29 2018-11-30 Oppo(重庆)智能科技有限公司 一种移动终端及其进程间通信的限制方法、存储介质
CN109032812A (zh) * 2018-06-29 2018-12-18 Oppo(重庆)智能科技有限公司 一种移动终端及其进程间通信的限制方法、存储介质
CN109032814A (zh) * 2018-06-29 2018-12-18 Oppo(重庆)智能科技有限公司 一种移动终端及其进程间通信的监控方法、存储介质
CN109032814B (zh) * 2018-06-29 2020-10-02 Oppo(重庆)智能科技有限公司 一种移动终端及其进程间通信的监控方法、存储介质
CN109144692A (zh) * 2018-07-16 2019-01-04 北京奇虎科技有限公司 一种用于分配进程的方法、装置及终端
CN110888684A (zh) * 2018-08-20 2020-03-17 中兴通讯股份有限公司 一种进程管理方法、终端及计算机可读存储介质
CN110162345A (zh) * 2019-05-05 2019-08-23 网宿科技股份有限公司 一种应用程序访问方法、装置和存储介质
CN110162345B (zh) * 2019-05-05 2022-02-18 网宿科技股份有限公司 一种应用程序访问方法、装置和存储介质
CN111427548A (zh) * 2020-03-18 2020-07-17 成都中科合迅科技有限公司 一种基于进程的插件式开发方法和系统
CN111427548B (zh) * 2020-03-18 2023-03-31 成都中科合迅科技有限公司 一种基于进程的插件式开发方法和系统

Also Published As

Publication number Publication date
CN104750555B (zh) 2018-01-23

Similar Documents

Publication Publication Date Title
CN104750555A (zh) 一种Android程序中的进程管理方法和装置
CN104750528B (zh) 一种Android程序中的组件管理方法和装置
CN107896162B (zh) 监控系统的部署方法、装置、计算机设备及存储介质
CN111651178A (zh) 容器配置更新方法、装置、计算机设备和存储介质
CN110463162B (zh) 应用部署方法、装置及系统
CN113296792B (zh) 存储方法、装置、设备、存储介质和系统
CN111258587B (zh) 一种安卓应用插件化的实现方法、装置、设备及存储介质
EP2701059A1 (en) Method and apparatus for loading application program
CN103580908A (zh) 服务器的配置方法及系统
US20240111549A1 (en) Method and apparatus for constructing android running environment
CN106873970B (zh) 一种操作系统的安装方法和装置
CN105553738A (zh) 配置信息的热加载方法及装置、分布式集群系统
CN104731622A (zh) 一种应用程序的加载方法、装置和移动终端
CN105516154A (zh) 应用于SEAndroid系统的安全策略配置方法及装置
CN106569880A (zh) 一种Android应用间动态共享资源的方法及系统
EP2842044A1 (en) Platform runtime abstraction
CN115328529B (zh) 应用管理方法及相关设备
CN104765624B (zh) 虚拟机应用程序的更新处理方法和装置
CN104699503A (zh) 一种替换安卓系统中函数的执行逻辑的方法及装置
CN110597568B (zh) 一种插件部署方法、系统及终端
CN107977572B (zh) 一种应用程序运行方法和装置、智能终端
CN114546588A (zh) 任务的部署方法、装置、存储介质及电子装置
CN113821226A (zh) 一种onie系统安装方法、装置、设备及介质
CN113419813A (zh) 一种基于容器平台部署裸机管理服务的方法及装置
CN103761118A (zh) 一种智能卡及智能卡内部署应用的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220801

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.