一种应用程序启动管理方法及装置
技术领域
本发明涉及智能终端技术领域,具体涉及一种应用程序启动管理方法及装置。
背景技术
随着科技的发展,智能终端(例如智能手机、平板电脑等)的功能越来越强大,成千上万的应用程序被开发出来供用户使用,应用程序是智能终端中不可缺少的一部分,当在智能终端中安装应用程序后,用户可以使用已安装的应用程序实现相应的功能操作(例如办公、聊天、视频或游戏等)。由于应用程序能给用户的生活和工作带来便利,因此,用户在智能终端中安装大量的应用程序已经是一种趋势。
目前,当用户使用某一个应用程序时,某些没有被用户主动打开的应用程序会自启动并且在后台运行,而当自启动并在后台运行的应用程序过多时,会导致智能终端的运行变得缓慢甚至卡顿,从而影响了智能终端的运行效率。
发明内容
本发明提供一种应用程序启动管理方法及装置,用于提高智能终端的运行效率。
本发明第一方面提供一种应用程序启动管理方法,包括:
获取在智能终端的应用程序启动后,上述智能终端上新运行的所有程序的标识,其中,上述应用程序的启动由用户主动触发;
根据所述应用程序的广播信息以及获取的上述智能终端新运行的所有程序的标识,禁止新运行的除上述应用程序以外的其它非系统程序接收上述应用程序发出的广播,其中,所述应用程序的广播信息包括:指示已注册接收所述应用程序发出的广播的所有程序的信息。
本发明第二方面提供一种应用程序启动管理装置,上述应用程序启动管理装置包括:
第一获取单元,用于获取在智能终端的应用程序启动后,上述智能终端上新运行的所有程序的标识,其中,上述应用程序的启动由用户主动触发;
控制单元,用于根据上述应用程序的广播信息和上述第一获取单元获取的上述智能终端新运行的所有程序的标识,禁止新运行的除上述应用程序以外的其它非系统程序接收上述应用程序发出的广播,其中,上述应用程序的广播信息包括:指示已注册接收所述应用程序发出的广播的所有程序的信息。
由上可见,本发明通过获取在智能终端的应用程序启动后该智能终端上新运行的所有程序的标识,根据上述应用程序的广播信息以及获取的该智能终端新运行的所有程序的标识,禁止新运行的除上述应用程序外的其它非系统程序接收该应用程序发出的广播,从而能够在该应用程序再次启动时,阻止没有被用户主动启动的非系统程序的自动运行,进而避免了这些非系统程序对智能终端运行速度的影响,提高了智能终端的运行效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种应用程序启动管理方法一个实施例流程示意图;
图2为本发明提供的一种应用程序启动管理装置一个实施例结构示意图。
具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种应用程序启动管理方法,包括:获取在智能终端的应用程序启动后,上述智能终端上新运行的所有程序的标识;根据上述应用程序的广播信息以及获取的上述智能终端新运行的所有程序的标识,禁止新运行的除上述应用程序以外的其它非系统程序接收上述应用程序发出的广播,其中,上述应用程序的广播信息包括:指示已注册接收所述应用程序发出的广播的所有程序的信息。本发明实施例还提供相应的应用程序启动管理装置,以下分别进行详细说明。
实施例一
本发明实例提供一种应用程序启动管理方法,如图1所示,本发明实施例中的应用程序启动管理方法包括:
步骤101、获取在智能终端的应用程序启动后,上述智能终端上新运行的所有程序的标识;
本发明实施例中,上述应用程序的启动由用户主动触发,其中,用户主动触发是指用户通过单击应用程序的图标、双击应用程序的图标或者输入预设的其它动作的方式输入触发相应应用程序启动的指令,使得相应应用程序在该指令的触发下启动的过程。
本发明实例中,当上述应用程序被触发启动时,可以通过比较在智能终端的应用程序启动前后上述智能终端上运行的程序,以此确定在上述应用程序启动后,上述智能终端上新运行的所有程序,进而新运行的所有程序的标识。其中,新运行的程序是指相对于上述应用程序即将启动时上述智能终端上所运行的程序,在上述应用程序启动之后上述智能终端上多运行的程序。举例说明,在应用程序A1即将启动时,智能终端S上所运行的程序有A2、A3、A4三个,在应用程序A1启动之后,智能终端S上所运行的程序有A1、A2、A3、A4和A5,则将程序A1和A5认为是在应用程序A1启动后,智能终端S上新运行的程序。
可选的,当接收到触发上述应用程序启动的指令时,认为该应用程序即将启动,此时生成包含上述智能终端正在运行的所有程序的标识的第一程序列表,当上述应用程序启动后,生成包含上述智能终端正在运行的所有程序的标识的第二程序列表;通过比较上述第一程序列表和上述第二程序列表,即可获取到在上述应用程序启动后,上述智能终端上新运行的所有程序的标识。具体地,可以持续检测上述智能终端上运行的程序,并在接收到触发上述应用程序启动的指令时,记录下此时或前一时刻检测到的上述智能终端上运行的程序的标识,并生成上述第一程序列表,在上述应用程序启动后,记录下此时或后一时刻检测到的上述智能终端上运行的程序的标识,生成上述第二程序列表;或者,也可以在接收到触发上述应用程序启动的指令时,再去检测获取当时上述智能终端上正在运行的程序的标识,生成上述第一程序列表,在上述应用程序启动后,再去检测获取当时上述智能终端上正在运行的程序的标识,生成第二程序列表。具体地,可以预设一时长,当接收到触发上述应用程序启动的指令时,等待该时长后认为上述应用程序启动已经启动,此时生成包含上述智能终端正在运行的所有程序的标识的第二程序列表,以设定上述时长为3秒为例进行说明(在实际应用中,上述时长也可以设定为4秒、5秒、6秒或其它时长),当接收到触发上述应用程序启动的指令时,生成包含上述智能终端正在运行的所有程序的标识的第一程序列表,并在3秒后,生成包含上述智能终端正在运行的所有程序的标识的第二程序列表。需要说明的是,本发明实施例中,除了上述以列表的形式记录上述智能终端在不同时期运行的程序的标识之外,也可以以数组、链表或其它类型的容器记录上述智能终端在不同时期运行的程序的标识,此处不作限定。
可选的,当通过单击上述应用程序的图标的方式输入触发上述应用程序启动的指令时,通过重写Launcher(即启动器)对上述智能终端应用程序点击的方法来获取上述应用程序的图标被点击时上述智能终端正在运行的所有进程和运行在这些进程中的所有程序的标识。需要说明的是,在上述应用程序的图标被点击时,上述应用程序处于即将启动但并未启动的状态。
本发明实施中,上述程序的标识例如可以为程序的包名、进程名或者其它能够唯一标识程序的标志符。其中,程序的进程具体可以通过调用ActivityManager的getRunningAppProcesses方法获得,程序的包名具体可以通过每个进程的程序包属性(即pkglist属性)获得,当然,程序的进程或程序的包名也可以通过编写其它独立程序获得,此处不作限定。
步骤102、根据上述应用程序的广播信息以及获取的上述智能终端新运行的所有程序的标识,禁止新运行的除上述应用程序以外的其它非系统程序接收上述应用程序发出的广播;
本发明实施例中,上述应用程序的广播信息包括:指示已注册接收上述应用程序发出的广播的所有程序的信息。可选的,获取上述应用程序所发出的广播,并根据获取的上述应用程序所发出的广播获取上述应用程序的广播信息。当然,也可以由其它外部设备维护该应用程序的广播信息并推送给执行步骤102的装置。
本发明实施例中,智能终端上运行的程序包括:系统程序和非系统程序(非系统程序也即应用程序),其中,非系统程序包含:智能终端出厂时内置的应用程序和用户在智能终端上安装的第三方应用程序。上述应用程序在启动时或启动之后会发出广播(例如Intent广播),以告知注册了接收该应用程序的广播的程序能够接收到该广播并获知该应用程序的启动事件,而非系统程序之所以能够随着该应用程序的启动而启动,原因之一是这些非系统程序注册了接收该应用程序发出的广播,因此,为了避免这些非系统程序随着该应用程序的启动而启动,本发明实施例中在找出这些非系统程序之后,禁止这些非系统程序接收该应用程序发出的广播,使得在该应用程序再次启动时,这些非系统程序无法再接收到该应用程序发出的广播,进而无法随着该应用程序的启动而启动。具体地,可在ActivityManagerService.Java类的broadcastlntentLocked方法中禁止上述其它非系统程序的标识添加到上述应用程序发出的广播的接收信息列表中,以此禁止上述其它非系统程序接收上述应用程序发出的广播。
由于上述应用程序发出的广播可能有多个,为了提高准确性,可选的,在步骤102之前获取上述应用程序在启动时所发出的广播,步骤102具体可以为:根据上述应用程序的广播信息、获取的上述智能终端新运行的所有程序的标识,以及获取的上述已注册接收上述应用程序在启动时所发出的广播,禁止新运行的除上述应用程序以外的其它非系统程序接收上述应用程序在启动时所发出的广播。具体地,可在上述应用程序启动时(和/或启动之后)调用ActivityManager的broadcastlntent方法获取上述应用程序在启动时(和/或启动之后)所发出的广播(为了便于描述,后续将上述应用程序在启动时所发出的广播描述为广播G),并调用ActivityManagerService.java类的broadcastlntentLocked方法获取已注册接收广播G的所有非系统程序的标识,通过在ActivityManagerService.Java类的broadcastlntentLocked方法中禁止上述其它非系统程序的标识添加到广播G的接收信息列表中,即可禁止上述其它非系统程序接收广播G。
在步骤101中获取到的上述智能终端新运行的所有程序的标识有可能包含系统程序的标识,步骤102中不禁止新运行的系统程序接收上述应用程序发出的广播,而只禁止新运行的除上述应用程序以外的其它非系统程序接收上述应用程序发出的广播。
可选的,通过非系统程序列表记录安装在上述智能终端中的所有非系统程序。在步骤102中,根据上述非系统程序列表记录的上述智能终端中的所有非系统程序的标识以及步骤101获取到的上述智能终端新运行的所有程序的标识即可区分出上述智能终端新运行的所有非系统程序的标识,进一步通过排除掉上述应用程序的标识,即可确定出上述其它非系统程序的标识。进一步,本发明实施例中的应用程序启动管理方法还包括:根据上述智能终端上的非系统程序安装情况维护上述非系统程序列表(维护也即更新),以便通过对上述非系统程序列表进行维护,使得该非系统程序列表能够准确记录上述智能终端中的所有非系统程序的标识。当然,该非系统程序列表也可以由外部设备维护并推送给执行步骤102的装置。需要说明的是,在其它实施例中,上述非系统程序列表也可以以数组、链表或其它类型的容器替代。
或者,在步骤102中,也可以根据系统程序或非系统程序的标识特性,从步骤101获取到的上述智能终端新运行的所有程序的标识中区分出非系统程序的标识,进一步通过排除掉上述应用程序的标识,即可确定出上述其它非系统程序的标识,或者,本发明实施例中也可以通过其它方式从步骤101获取到的所有程序的标识中区分出非系统程序的标识,此处不作限定。
进一步,在步骤101之后,还可以根据获取的上述智能终端新运行的所有程序的标识,关闭新运行的除上述应用程序以外的其它非系统程序。具体地,可在获知新运行的除上述应用程序以外的其它非系统程序的标识后,通过调用ActivityManager的restartPackahe方法结束上述其它非系统程序的进程,以此关闭上述其它非系统程序,当然,本发明实施例也可以通过其它方式关闭上述其它非系统程序,此处不作限定。
需要说明的是,本发明实施例中的应用程序启动管理方法可以由应用程序启动管理装置执行,上述应用程序启动管理装置可以通过硬件和/或软件的方式集成在上述智能终端中,上述智能终端具体可以为智能手机、平板电脑或者其它支持运行应用程序的终端,此处不作限定。
由上可见,本发明实施例中通过获取在智能终端的应用程序启动后该智能终端上新运行的所有程序的标识,根据获取的该智能终端新运行的所有程序的标识,禁止新运行的除上述应用程序外的其它非系统程序接收该应用程序发出的广播,从而能够在该应用程序再次启动时,阻止没有被用户主动启动的非系统程序的自动运行,进而避免了这些非系统程序对智能终端运行速度的影响,提高了智能终端的运行效率。
实施例二
本发明实施例中对一种应用程序启动管理装置进行描述,请参阅图2,本发明实施例中的应用程序启动管理装置200包括:第一获取单元201和控制单元202。
其中,第一获取单元201用于获取在智能终端的应用程序启动后,上述智能终端上新运行的所有程序的标识,其中,上述应用程序的启动由用户主动触发。本发明实施例中,上述应用程序的启动由用户主动触发,其中,用户主动触发是指用户通过单击应用程序的图标、双击应用程序的图标或者输入预设的其它动作的方式输入触发相应应用程序启动的指令,使得相应应用程序在该指令的触发下启动的过程。本发明实例中,新运行的程序是指相对于上述应用程序即将启动时上述智能终端上所运行的程序,在上述应用程序启动之后上述智能终端上多运行的程序。具体地,当通过单击上述应用程序的图标的方式输入触发上述应用程序启动的指令时,第一获取单元201可通过重写Launcher(即启动器)对上述智能终端应用程序点击的方法实现,使得上述应用程序的图标被点击时,第一获取单元201能够获取上述应用程序的图标被点击时上述智能终端正在运行的所有进程和运行在这些进程中的所有程序的标识。需要说明的是,在上述应用程序的图标被点击时,上述应用程序处于即将启动但并未启动的状态。
控制单元202用于根据上述应用程序的广播信息和第一获取单元201获取的上述智能终端新运行的所有程序的标识,禁止新运行的除上述应用程序以外的其它非系统程序接收上述应用程序发出的广播,其中,上述应用程序的广播信息包括:指示已注册接收所述应用程序发出的广播的所有程序的信息。本发明实施例中,上述应用程序启动时或启动之后会发出广播(例如Intent广播),以告知注册了接收该应用程序的广播的程序能够接收到该广播并获知该应用程序的启动事件,而非系统程序之所以能够随着该应用程序的启动而启动,原因之一是这些非系统程序注册了接收该应用程序发出的广播,因此,为了避免这些非系统程序随着该应用程序的启动而启动,本发明实施例中在找出这些非系统程序之后,由控制单元202禁止这些非系统程序接收该应用程序发出的广播,使得在该应用程序再次启动时,这些非系统程序无法再接收到该应用程序发出的广播,进而无法随着该应用程序的启动而启动。具体地,控制单元202可在ActivityManagerService.Java类的broadcastlntentLocked方法中禁止上述其它非系统程序的标识添加到上述应用程序发出的广播的接收信息列表中,以此禁止上述其它非系统程序接收上述应用程序发出的广播。
由于上述应用程序发出的广播可能有多个,为了提高准确性,控制单元202具体可用于:根据获取的上述智能终端新运行的所有程序的标识,禁止新运行的除上述应用程序以外的其它非系统程序接收上述应用程序在启动时发出的广播。可选的,本发明实施例中的应用程序启动管理装置还包括:第二获取单元,用于获取上述应用程序在启动时所发出的广播;第三获取单元,用于根据上述第二获取单元所获取的广播获取上述应用程序的广播信息;控制单元202具体用于:根据上述第一获取单元获取的上述智能终端新运行的所有程序的标识,以及上述第三获取单元获取的上述应用程序的广播信息,禁止新运行的除上述应用程序以外的其它非系统程序接收上述应用程序发出的广播。具体地,上述第二获取单元可在上述应用程序启动时(和/或启动之后)调用ActivityManager的broadcastlntent方法获取上述应用程序在启动时(和/或启动之后)所发出的广播(为了便于描述,后续将上述第二获取单元获取的广播描述为广播G),上述第三获取单元可调用ActivityManagerService.java类的broadcastlntentLocked方法获取已注册接收广播G的非系统应用程序的标识,上述控制单元通过在ActivityManagerService.Java类的broadcastlntentLocked方法中禁止上述其它非系统程序的标识添加到广播G的接收信息列表中,即可禁止上述其它非系统程序接收广播G。
可选的,当接收到触发上述应用程序启动的指令时,认为该应用程序即将启动,第一获取单元201包括:
指令接收单元,用于接收触发上述应用程序启动的指令;
第一生成单元,用于当上述指令接收单元接收到触发上述应用程序启动的指令时,生成包含上述智能终端正在运行的所有程序的标识的第一程序列表;
第二生成单元,用于当上述应用程序启动后,生成包含上述智能终端正在运行的所有程序的标识的第二程序列表;
比较获取单元,用于比较上述第一程序列表和上述第二程序列表,获取在上述应用程序启动后,上述智能终端上新运行的所有程序的标识。
可选的,控制单元202具体用于:根据第一获取单元201获取的上述智能终端新运行的所有程序的标识以及非系统程序列表,禁止新运行的除上述应用程序以外的其它非系统程序接收上述应用程序发出的广播,其中,上述非系统程序列表用于记录安装在上述智能终端中的所有非系统程序的标识。进一步,本发明实施例中的应用程序启动管理装置还可以包括:维护单元,用于根据上述智能终端上的非系统程序安装情况维护上述非系统程序列表。
可选的,上述第一生成单元具体用于:调用getRunningAppProcesses方法获取上述智能终端正在运行的所有进程;根据获取的上述智能终端正在运行的所有进程生成上述第一程序列表。
可选的,上述第二生成单元具体用于:当上述指令接收单元接收到触发上述应用程序启动的指令时,等待预设的时长后生成包含上述智能终端正在运行的所有程序的标识的第二程序列表。
可选的,控制单元202还用于:根据第一获取单元201获取的上述智能终端新运行的所有程序的标识,关闭新运行的除上述应用程序以外的其它非系统程序。具体地,控制单元202可调用restartPackahe方法结束新运行的除上述应用程序以外的其它非系统程序的进程,以此关闭上述其它非系统程序。
需要说明的是,本发明实施中,上述程序的标识例如可以为程序的包名、进程名或者其它能够唯一标识程序的标志符。其中,程序的进程具体可以通过调用ActivityManager的getRunningAppProcesses方法获得,程序的包名具体可以通过每个进程的程序包属性(即pkglist属性)获得,当然,程序的进程或程序的包名也可以通过编写其它独立程序获得,此处不作限定。
需要说明的是,本发明实施例中的应用程序启动管理装置可以通过硬件和/或软件的方式集成在上述智能终端中,上述智能终端具体可以为智能手机、平板电脑或者其它支持运行应用程序的终端,此处不作限定。
应理解,本发明实施例中的应用程序启动管理装置的各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述方法实施例中的相关描述,此处不再赘述。
由上可见,本发明实施例中的应用程序启动管理装置通过获取在智能终端的应用程序启动后该智能终端上新运行的所有程序的标识,根据获取的该智能终端新运行的所有程序的标识,禁止新运行的除上述应用程序外的其它非系统程序接收该应用程序发出的广播,从而能够在该应用程序再次启动时,阻止没有被用户主动启动的非系统程序的自动运行,进而避免了这些非系统程序对智能终端运行速度的影响,提高了智能终端的运行效率。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上为对本发明所提供的一种应用程序启动管理方法及装置的描述,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。