CN104375857B - 一种应用程序运行多个实例的方法、装置及终端设备 - Google Patents
一种应用程序运行多个实例的方法、装置及终端设备 Download PDFInfo
- Publication number
- CN104375857B CN104375857B CN201410566774.0A CN201410566774A CN104375857B CN 104375857 B CN104375857 B CN 104375857B CN 201410566774 A CN201410566774 A CN 201410566774A CN 104375857 B CN104375857 B CN 104375857B
- Authority
- CN
- China
- Prior art keywords
- mirror image
- startup
- image process
- application program
- configuration file
- 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.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种应用程序运行多个实例的方法,包括:接收应用程序的启动指令;若所述应用程序的源进程为已启动状态,根据所述启动指令生成所述应用程序的镜像进程,并将所述镜像进程重定向到预设的第一启动路径;读取所述第一启动路径下预设的第一启动配置文件;根据所述第一启动配置文件启动所述镜像进程。本发明实施例还公开了一种装置和终端。采用本发明,可减少存储空间的需求。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种应用程序运行多个实例的方法、装置及终端。
背景技术
随着移动互联网的发展,用户对移动终端应用程序APP的需求越来越丰富。在日常的使用中,用户会拥有多个APP的账号,用于分别满足工作、学习和生活的等不同场合的需要。例如,用户拥有多个即时通信软件,在某些场合中,用户需要同时开启多个即时通信软件,即多实例运行,这就需要同一APP可以在移动终端上多次运行,且每个运行的实例互相独立互不影响。
目前在移动终端上实现多实例运行的方法为:通过代理APP下载定制的需要多实例运行的APP,需要同时运行几个APP就安装基础定制的APP。上述方法存在的不足是:每运行一次APP就需要安装一次定制的APP,会成倍的占用移动终端的存储空间。
发明内容
本发明实施例所要解决的技术问题在于,提供一种应用程序运行多个实例的方法。可解决现有技术中多实例运行的应用程序占用的存储空间大的不足
为了解决上述技术问题,本发明实施例提供了一种应用程序运行多个实例的方法,包括:
接收应用程序的启动指令;
若所述应用程序的源进程为已启动状态,根据所述启动指令生成所述应用程序的镜像进程,并将所述镜像进程重定向到预设的第一启动路径;
读取所述第一启动路径下预设的第一启动配置文件;
根据所述第一启动配置文件启动所述镜像进程。
相应地,本发明实施例还提供了一种应用程序运行多个实例的装置,包括:
接收模块,用于接收应用程序的启动指令;
重定向模块,用于若所述应用程序的源进程为已启动状态,根据所述启动指令生成所述应用程序的镜像进程,并将所述镜像进程重定向到预设的第一启动路径;
读取模块,用于读取所述第一启动路径下预设的第一启动配置文件;
启动模块,用于根据所述第一启动配置文件启动所述镜像进程。
实施本发明实施例,具有如下有益效果:
通过接收应用程序的启动指令,若应用程序的源进程为已启动状态,根据启动指令生成镜像进程,并将镜像进程重定向到预设的第一启动路径,读取第一启动路径下的第一启动配置文件并启动镜像进程,镜像进程的启动路径和启动配置文件与源进程不同,可以是操作系统的互斥机制失效,以达到多实例运行的需求,同时,本发明实施例不需要多次安装应用程序,能有效的节省存储空间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明第一实施例提供的一种应用程序运行多个实例的方法的流程示意图;
图2是本发明第二实施例提供的一种应用程序运行多个实例的方法的流程示意图;
图3是本发明第一实施例提供的一种应用程序运行多个实例的装置的结构示意图;
图4是本发明第二实施例提供的一种应用程序运行多个实例的装置的结构示意图;
图5是图4中启动模块的结构示意图。
图6是本发明第三实施例提供的一种应用程序运行多个实例的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中,终端可以为PC(PersonalComputer,个人计算机)、笔记本电脑、手机、PAD(平板电脑)、智能可穿戴设备、车载终端等。
下面结合图1和图2.,对本发明实施例提供的应用程序运行多个实例的方法进行详细介绍。
参见图1,为本发明实施例提供的一种应用程序运行多个实例的方法,在本发明实施例中,所述方法包括:
S101、接收应用程序的启动指令。
其中,应用程序运行多个实例的装置(以下简称装置)可接收用户通过键盘、鼠标或触摸屏等输入设备发出的启动指令,用户可通过触发显示在显示设备桌面或二级菜单下的图标生成启动指令,该图标为指向应用程序的启动入口的快捷方式。例如,用户通过点击显示在触摸屏上的指向应用程序的图标,装置检测到图标上发生点击事件,生成启动指令,装置接收到启动应用程序的启动指令。
S102、若所述应用程序的源进程为已启动状态,根据所述启动指令生成所述应用程序的镜像进程,并将所述镜像进程重定向到预设的第一启动路径。
具体的,应用程序的源进程指应用程序第一次启动完成后生成的进程,镜像程序是指源进程启动完成后再次启动的进程,可以是第二次启动或第三次启动的进程或第N次启动的进程,N≥2。装置接收到启动应用程序的启动指令后,查询应用程序的源进程是否为已启动状态。查询的方法可以是:获取应用程序的进程名或进程号PID(ProcessIdentity),查询操作系统中为已启动状态的进程的进程名或PID是否与所述应用程序相同,如果有相同的,表明应用程序的源进程为已启动状态,如果没有相同的,表明应用程序的源进程为未启动状态。具体实施时可以采用其他方法判断应用程序的源进程是否为已启动状态。如果应用程序的源进程为已启动状态,装置根据启动指令生成源进程的镜像进程,并将镜像进程重定向预设的到第一启动路径。由于镜像进程为源进程的副本,在初始状态下,镜像进程的默认启动路径以及默认启动配置文件和源进程是相同的,如果使用默认启动路径下的默认启动配置文件启动镜像进程,会被操作系统的互斥机制识别出来,无法正常启动镜像进程。在本发明的实施例中,装置将镜像进程重定向到预设的第一启动路径,第一启动路径不同于源进程的默认启动路径。
S103、读取所述第一启动路径下预设的第一启动配置文件。
其中,预设设置有多个不同的启动路径,每个启动路径下预设设置有一个启动配置文件,每个启动配置文件中的启动参数不相同,本发明实施例所述的第一启动路径可以是预先设置的多个启动路径中的任意一个。当镜像进程需要重定向启动路径时,可以根据镜像进程的启动顺序依次将预设的启动路径分配给该镜像进程,也可以从多个启动路径中随机分配一个启动路径给该镜像进程。需要说明的是,分配给镜像进程的启动路径没有被其他进程占用的进程。
装置读取分配的第一启动路径下的第一启动文件,第一启动文件中包括应用程序的启动参数,例如,启动参数包括但不限于应用程序名、进程名和包名。
S104、根据所述第一启动配置文件启动所述镜像进程。
具体的,装置根据第一启动配置文件中的启动参数启动镜像进程,这样,装置可以同时运行应用程序的源进程和镜像进程,后续装置可以采用上述相同的方法启动多个镜像进程,实现了应用程序运行多个实例的需求。
实施本发明的实施例,通过接收应用程序的启动指令,若应用程序的源进程为已启动状态,根据启动指令生成镜像进程,并将镜像进程重定向到预设的第一启动路径,读取第一启动路径下的第一启动配置文件并启动镜像进程,镜像进程的启动路径和启动配置文件与源进程不同,可以是操作系统的互斥机制失效,以达到多实例运行的需求,同时,本发明实施例不需要多次安装应用程序,能有效的节省存储空间。
参见图2,为本发明第二实施例提供的一种应用程序运行多个实例的方法的流程图,在本发明实施例中,所述方法包括:
S201、接收应用程序的启动指令。
其中,装置可接收用户通过键盘、鼠标或等输入设备发出启动指令,用户可通过触发显示设备桌面或二级菜单下显示的图标生成启动指令,图标为应用程序启动的快捷方式。例如,应用程序为即时通信软件,即时通信软件安装完成后,在显示设备的桌面上显示一个启动应用程序的快捷方式的图标,用户在触摸屏点击图标生成启动指令,装置接收到启动应用程序的启动指令。
S202、所述应用程序的源进程是否为已启动状态。
具体的,应用程序的源进程指应用程序第一次启动完成后生成的进程,源进程的启动过程按照应用程序预先配置的启动参数进程。装置接收到应用程序的启动指令后,查询应用程序的源进程是否为已启动状态,查询的方法可以是:获取应用程序的进程名或进程号PID,查询操作系统中是否存在相同进程名或PID的进程,如果存在,表明应用程序的源进程为已启动状态,执行S203;如果不存在,表明应用程序的源进程为未启动状态,执行S204。
示例性的,应用程序为即时通信软件,操作系统为Android操作系统,即时通信软件的进程名为com.tencent.mm,PID为65512,装置接收到启动即时通信软件的启动指令后,遍历Android操作系统中所有为已启动状态的进程的进程名或PID,如果存在有进程名为com.tencent.mm或PID为65512的进程,则表明Android操作系统中即时通信软件的源进程为已运行状态,否则即时通信软件的源进程为未运行状态。
S203、根据所述启动指令生成所述应用程序的镜像进程,并将所述镜像进程重定向到预设的第一启动路径。
其中,装置确定应用程序的源进程为已启动状态,根据启动指令生成应用程序的镜像进程,镜像进程为源进程的副本,在初始状态下,镜像进程和源进程的默认启动路径以及默认启动配置文件和源进程是相同的。如果安装初始状态下的默认启动路径和默认启动配置文件来启动镜像进程,会被操作系统的互斥机制识别出来,导致无法正常启动应用程序的镜像进程。在本发明实施例中,预先设置有多个启动路径,每个启动路径下有一个启动配置文件,第一启动路径为多个启动路径中的一个。为镜像进程重定向启动路径时,可以根据镜像进程的启动路径依次分配启动路径,或者随机从多个启动路径中分配一个启动路径给镜像进程。需要说明的是,分配给镜像进程的启动路径没有被其他进程占用。装置将镜像进程的重定向到预设的第一启动路径。第一启动路径不同于源进程的默认启动路径。
示例性的,应用程序为即时通信应用程序,即时通信软件的源进程的默认启动路径为/storage/instantmessage/system,镜像进程在初始状态时与源进程的默认启动路径是相同的。装置在确定即时通信软件的源进程为已启动状态后,将镜像进程重定向到分配的第一启动路径/storage/instantmessage1/system,操作系统的互斥机制会确定源进程和镜像进程属于不同的应用程序,因此不会杀死镜像进程。
S204、根据所述启动指令生成所述应用程序的源进程。
其中,应用程序没有启动任何进程,此时启动的进程为第一个启动的进程,因此为应用程序的源进程。
S205、读取所述源进程关联的默认启动路径下的默认启动配置文件。
其中,装置读取应用程序的默认启动路径下的默认启动配置文件,上述配置信息在应用程序中预先设置。
S206、根据所述默认启动配置文件启动所述源进程。
其中,装置根据默认启动配置文件中的默认启动参数启动源进程,源进程为第一个启动的进程。
S207、读取所述第一启动路径下预设的第一启动配置文件。
其中,预先设置有不同于应用程序的源进程的默认启动路径的多个启动路径,每个启动路径下存储一个不同于源进程的默认启动配置文件的启动配置文件,在本发明实施例中,第一启动路径为多个启动路径中的任意一个。每个启动路径下的启动配置文件均关联有表示其占用状态或空闲状态的标识符,空闲状态表示该启动配置文件的被某个线程占用,此时启动配置文件不能再被分配给其他进程使用;空闲状态表示启动配置文件未被进程占用,此时该启动配置文件可以被分配给其他进程使用。装置读取分配的第一启动路径下的第一启动配置文件。
示例性的,应用程序的源进程的默认启动路径为/storage/instantmessage/system,默认启动路径下的默认启动配置文件为config;装置中预先设置有3个启动路径,分别为/storage/instantmessage1/system、/storage/instantmessage2/system、/storage/instantmessage3/system,对应的启动路径下的启动配置文件分别为config1、config2、config3,上述3个启动配置文件均为空闲状态,装置读取其中一个启动路径下的启动配置文件,例如,读取config1。
S208、根据所述第一启动配置文件启动所述镜像进程。
具体的,Android系统启动后,由Init进程启动Zygote服务进程,Zygote服务进程启动完成后,装置解析第一配置文件中的启动参数,启动参数包括启动应用程序的镜像进程所需的参数,例如,启动参数包括:进程号、存储空间地址和启动路径,装置发送通知消息以通知Zygote服务进程根据所述启动参数创建所述镜像进程,其中,所述通知消息中携带所述启动参数,Zygote服务进程根据启动参数创建应用程序的镜像进程。在启动Zygote服务进程时会创建一个Dalvik虚拟机实例,当Zygote服务进程成功创建应用程序的镜像进程后,会将Dalvik虚拟机实体复制到创建的应用程序的镜像进程中,从而使镜像进程有一个独立的Dalvik虚拟机实例,Davlik虚拟机实例进一步对应用程序的镜像进程进行初始化后,最终启动镜像进程。
S209、接收到所述镜像进程发出的写操作时,将所述写操作对应的数据写入预设的写存储区,其中,所述预设的写存储区与所述源进程的默认写存储区的位置不相同。
其中,由于镜像进程的独立性,镜像进程发出写操作对应的数据不能与其他进程共享,需要预先为每个镜像进程开启独立的写存储区,每个镜像进程的写存储区的位置不相同,镜像进程的写存储区和源进程的写存储区的位置也不相同。装置接收到镜像进程发出的写操作时,将写操作对应的数据写入预设的写存储区。
S210、接收到读取所述镜像进程的公有文件的读请求时,将所述读请求重定向到所述源进程,由所述源进程返回所述公有文件。
其中,公有文件指的是应用程序的源进程和镜像进程可以共享的文件,例如,公有文件包括但不限于应用程序的提示音、图标和主题风格。装置接收到镜像进程读取公有文件的读请求时,将读请求重定向到源进程,由源进程读取应用程序的公有文件并返回给镜像进程。
S211、接收到所述镜像进程发出的用于调用系统服务的远程过程调用协议RPC(RemoteProcedureCallProtocol,简称RPC)调用请求时,将所述RPC调用请求中的第一参数映射为第二参数,并将映射后的RPC调用请求发送至操作系统的内核。
具体的,镜像进程通过发出RPC请求调用系统服务,例如,系统服务包括通信录、短信、传感器或相机,由于镜像进程为源进程的副本,镜像进程发出的RPC调用请求包括参数和源进程中的参数是相同的,参数包括程序号、程序版本号和过程号,如果镜像进程通过RPC调用请求调用系统服务,操作系统会将响应结果返回给源进程,这样镜像进程就无法正常调用系统服务。在本发明实施例中,装置将镜像进程发出的RPC调用请求包括的第一参数映射为第二参数,并将映射后的RPC调用请求发送至操作系统,使操作系统判定出该RPC调用请求不是由源进程发出的,而是由其他进程发出的,这样可以区分每个不同的镜像进程和源进程,以免进程之间发生冲突。
示例性的,镜像进程发出的RPC调用请求中包括的第一参数的格式如下:
程序号:110
程序版本号:V4.3.5
过程号:65123
装置将该镜像进程的第一参数镜像映射为第二参数的格式如下:
程序号:111
程序版本号:V4.3.0
过程号:65123
装置将映射后的RPC调用请求发送至操作系统,由操作系统根据所述RPC调用请求返回RPC调用响应。
需要说明的是S209、S210和S211的执行顺序不作限制,三个步骤可以安装任意顺序执行。
实施本发明的实施例,通过接收应用程序的启动指令,若应用程序的源进程为已启动状态,根据启动指令生成镜像进程,并将镜像进程重定向到预设的第一启动路径,读取第一启动路径下的第一启动配置文件并启动镜像进程,镜像进程的启动路径和启动配置文件与源进程不同,可以是操作系统的互斥机制失效,以达到多实例运行的需求,同时,本发明实施例不需要多次安装应用程序,能有效的节省存储空间。
参见图3,为本发明实施例提供的一种应用程序运行多个实例的装置,在本发明实施例中,所述装置包括接收模块10、重定向模块11、读取模块12和启动模块13。
接收模块10,用于接收应用程序的启动指令。
其中,接收模块10可接收用户通过键盘、鼠标或触摸屏等输入设备发出的启动指令,用户可通过触发显示在显示设备桌面或二级菜单下的图标生成启动指令,该图标为指向应用程序的启动入口的快捷方式。例如,用户通过点击显示在触摸屏上的指向应用程序的图标,接收模块10检测到图标上发生点击事件,生成启动指令,接收模块10接收到启动应用程序的启动指令。
重定向模块11,用于若所述应用程序的源进程为已启动状态,根据所述启动指令生成所述应用程序的镜像进程,并将所述镜像进程重定向到预设的第一启动路径。
具体的,应用程序的源进程指应用程序第一次启动完成后生成的进程,镜像程序是指源进程启动完成后再次启动的进程,可以是第二次启动或第三次启动的进程或第N次启动的进程,N≥2。接收模块10接收到启动应用程序的启动指令后,重定向模块11查询应用程序的源进程是否为已启动状态。查询的方法可以是:获取应用程序的进程名或进程号PID,查询操作系统中为已启动状态的进程的进程名或PID是否与所述应用程序相同,如果有相同的,表明应用程序的源进程为已启动状态,如果没有相同的,表明应用程序的源进程为未启动状态。具体实施时可以采用其他方法判断应用程序的源进程是否为已启动状态。如果应用程序的源进程为已启动状态,重定向模块11根据启动指令生成源进程的镜像进程,并将镜像进程重定向预设的到第一启动路径。由于镜像进程为源进程的副本,在初始状态下,镜像进程的默认启动路径以及默认启动配置文件和源进程是相同的,如果使用默认启动路径下的默认启动配置文件启动镜像进程,会被操作系统的互斥机制识别出来,无法正常启动镜像进程。在本发明的实施例中,重定向模块11将镜像进程重定向到预设的第一启动路径,第一启动路径不同于源进程的默认启动路径。
读取模块12,用于读取所述第一启动路径下预设的第一启动配置文件。
其中,预设设置有多个不同的启动路径,每个启动路径下预设设置有一个启动配置文件,每个启动配置文件中的启动参数不相同,本发明实施例所述的第一启动路径可以是预先设置的多个启动路径中的任意一个。当镜像进程需要重定向启动路径时,可以根据镜像进程的启动顺序依次将预设的启动路径分配给该镜像进程,也可以从多个启动路径中随机分配一个启动路径给该镜像进程。需要说明的是,分配给镜像进程的启动路径没有被其他进程占用的进程。
读取模块12读取分配的第一启动路径下的第一启动文件,第一启动文件中包括应用程序的启动参数,例如,启动参数包括但不限于应用程序名、进程名和包名。
启动模块13,用于根据所述第一启动配置文件启动所述镜像进程。
具体的,启动模块13根据第一启动配置文件中的启动参数启动镜像进程,这样,可以同时运行应用程序的源进程和镜像进程,后续装置可以采用上述相同的方法启动多个镜像进程,实现了应用程序运行多个实例的需求。
实施本发明的实施例,通过接收应用程序的启动指令,若应用程序的源进程为已启动状态,根据启动指令生成镜像进程,并将镜像进程重定向到预设的第一启动路径,读取第一启动路径下的第一启动配置文件并启动镜像进程,镜像进程的启动路径和启动配置文件与源进程不同,可以是操作系统的互斥机制失效,以达到多实例运行的需求,同时,本发明实施例不需要多次安装应用程序,能有效的节省存储空间。
参见图4和图5,为本发明第二实施例提供的一种应用程序运行多个实例的装置的结构示意图,在本发明实施例中,所述装置除包括接收模块10、重定向模块11、读取取模块12和启动模块13之外,可选的,所述装置还包括写操作模块14;可选的,所述装置还包括读操作模块15;可选的,所述装置还包括映射模块16。
写操作模块14,用于接收到所述镜像进程发出的写操作时,将所述写操作对应的数据写入预设的写存储区,其中,所述预设的写存储区和所述源进程的默认写存储区的位置不相同。
读操作模块15,用于接收到读取所述镜像进程的公有文件读请求时,将所述读请求重定向到所述源进程,以使所述源进程根据所述读请求返回所述公有文件。
映射模块16,用于接收到所述镜像进程发出的用于调用系统服务的远程过程调用协议RPC调用请求时,将所述RPC调用请求中的第一参数映射为第二参数,并将映射后的RPC调用请求发送至操作系统的内核。
可选的,启动模块13包括:解析单元131、发送单元132和通知单元133。
解析单元131,用于解析出所述第一启动配置文件中的启动参数。
发送单元132,用于发送通知消息以通知Zygote服务进程根据所述启动参数创建所述镜像进程,其中,所述通知消息中携带所述启动参数。
通知单元133,用于通知Dalvik虚拟机对所述镜像进程进行初始化操作后启动所述镜像进程。
本发明实施例和方法实施例二属于同一构思,其带来的技术效果也相同,具体请参照方法实施例二的描述,此处不再赘述。
参见图6,为本发明实施例第三实施例提供的一种应用程序运行多个实例的结构示意图,如图6所示,所述装置1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图6所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及应用程序。
在图6所示的装置1000中,处理器1001可以用于调用存储器1005中存储的软件测试应用程序,并具体执行以下步骤:
接收应用程序的启动指令;
若所述应用程序的源进程为已启动状态,根据所述启动指令生成所述应用程序的镜像进程,并将所述镜像进程重定向到预设的第一启动路径;
读取所述第一启动路径下预设的第一启动配置文件;
根据所述第一启动配置文件启动所述镜像进程。
在本发明的一些实施例中,处理器1001还用于执行:
若所述应用程序的源进程为未启动状态,根据所述启动指令生成所述应用程序的所述源进程;
读取所述源进程关联的默认启动路径下的默认启动配置文件;
根据所述默认启动配置文件启动所述源进程。
在本发明的一些实施例中,处理器1001还用于执行:
接收到所述镜像进程发出的写请求时,将所述写请求对应的数据写入预设的写存储区,其中,所述预设的写存储区和所述源进程的默认写存储区的位置不相同。
在本发明的一些实施例中,处理器1001执行所述根据所述第一启动配置文件启动所述镜像进程包括:
解析出所述第一启动配置文件中的启动参数;
发送通知消息以通知Zygote服务进程根据所述启动参数创建所述镜像进程,其中,所述通知消息中携带所述启动参数;
通知Dalvik虚拟机对所述镜像进程进行初始化操作后启动所述镜像进程。
在本发明的一些实施例中,处理器1001还用于执行:
接收到读取所述镜像进程的公有文件的读请求时,将所述读请求重定向到所述源进程,以使所述源进程根据所述读请求返回所述公有文件。
在本发明的一些实施例中,处理器1001还用于执行:
接收到所述镜像进程发出的用于调用系统服务的远程过程调用协议RPC调用请求时,将所述RPC调用请求中的第一参数映射为第二参数,并将映射后的RPC调用请求发送至操作系统的内核。
实施本发明的实施例,通过接收应用程序的启动指令,若应用程序的源进程为已启动状态,根据启动指令生成镜像进程,并将镜像进程重定向到预设的第一启动路径,读取第一启动路径下的第一启动配置文件并启动镜像进程,镜像进程的启动路径和启动配置文件与源进程不同,可以是操作系统的互斥机制失效,以达到多实例运行的需求,同时,本发明实施例不需要多次安装应用程序,能有效的节省存储空间。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (11)
1.一种应用程序运行多个实例的方法,其特征在于,包括:
接收应用程序的启动指令;
若所述应用程序的源进程为已启动状态,根据所述启动指令生成所述应用程序的镜像进程,并将所述镜像进程重定向到预设的第一启动路径;
读取所述第一启动路径下预设的第一启动配置文件;其中,所述第一启动配置文件不同于所述源进程的默认启动配置文件;
根据所述第一启动配置文件中的启动参数启动所述镜像进程;其中,所述启动参数包括应用程序名、进程名和包名。
2.如权利要求1所述的方法,其特征在于,所述根据所述第一启动配置文件启动所述镜像进程之后,还包括:
接收到所述镜像进程发出的写请求时,将所述写请求对应的数据写入预设的写存储区,其中,所述预设的写存储区和所述源进程的默认写存储区的位置不相同。
3.如权利要求2所述的方法,其特征在于,所述根据所述第一启动配置文件启动所述镜像进程包括:
解析出所述第一启动配置文件中的启动参数;
发送通知消息以通知Zygote服务进程根据所述启动参数创建所述镜像进程,其中,所述通知消息中携带所述启动参数;
通知Dalvik虚拟机对所述镜像进程进行初始化操作后启动所述镜像进程。
4.如权利要求1或2所述的方法,其特征在于,还包括:
接收到读取所述镜像进程的公有文件的读请求时,将所述读请求重定向到所述源进程,以使所述源进程根据所述读请求返回所述公有文件。
5.如权利要求1或2所述的方法,其特征在于,还包括:
接收到所述镜像进程发出的用于调用系统服务的远程过程调用协议RPC调用请求时,将所述RPC调用请求中的第一参数映射为第二参数,并将映射后的RPC调用请求发送至操作系统的内核。
6.一种应用程序运行多个实例的装置,包括:
接收模块,用于接收应用程序的启动指令;
重定向模块,用于若所述应用程序的源进程为已启动状态,根据所述启动指令生成所述应用程序的镜像进程,并将所述镜像进程重定向到预设的第一启动路径;
读取模块,用于读取所述第一启动路径下预设的第一启动配置文件;其中,所述第一启动配置文件不同于所述源进程的默认启动配置文件;
启动模块,用于根据所述第一启动配置文件中的启动参数启动所述镜像进程;其中,所述启动参数包括应用程序名、进程名和包名。
7.如权利要求6所述的装置,其特征在于,还包括:
写操作模块,用于接收到所述镜像进程发出的写操作时,将所述写操作对应的数据写入预设的写存储区,其中,所述预设的写存储区和所述源进程的默认写存储区的位置不相同。
8.如权利要求7所述的装置,其特征在于,所述启动模块包括:
解析单元,用于解析出所述第一启动配置文件中的启动参数;
发送单元,用于发送通知消息以通知Zygote服务进程根据所述启动参数创建所述镜像进程,其中,所述通知消息中携带所述启动参数;
通知单元,用于通知Dalvik虚拟机对所述镜像进程进行初始化操作后启动所述镜像进程。
9.如权利要求6所述的装置,其特征在于,还包括:
读操作模块,用于接收到读取所述镜像进程的公有文件读请求时,将所述读请求重定向到所述源进程,以使所述源进程根据所述读请求返回所述公有文件。
10.如权利要求6所述的装置,其特征在于,还包括:
映射模块,用于接收到所述镜像进程发出的用于调用系统服务的远程过程调用协议RPC调用请求时,将所述RPC调用请求中的第一参数映射为第二参数,并将映射后的RPC调用请求发送至操作系统的内核。
11.一种终端,其特征在于,包括如权利要求6-10任意一项所述的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410566774.0A CN104375857B (zh) | 2014-10-22 | 2014-10-22 | 一种应用程序运行多个实例的方法、装置及终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410566774.0A CN104375857B (zh) | 2014-10-22 | 2014-10-22 | 一种应用程序运行多个实例的方法、装置及终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104375857A CN104375857A (zh) | 2015-02-25 |
CN104375857B true CN104375857B (zh) | 2016-06-01 |
Family
ID=52554797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410566774.0A Active CN104375857B (zh) | 2014-10-22 | 2014-10-22 | 一种应用程序运行多个实例的方法、装置及终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104375857B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104965786B (zh) * | 2015-06-25 | 2019-01-11 | 上海华为技术有限公司 | 一种应用程序的调试方法、调试主机及运行主机 |
CN106899795B (zh) * | 2015-12-17 | 2020-06-09 | 阿里巴巴集团控股有限公司 | 一种相机硬件参数调用、设置方法、装置及相机应用系统 |
CN105589747B (zh) * | 2016-02-25 | 2018-10-23 | 深圳市创想天空科技股份有限公司 | 应用程序多开的控制方法及系统 |
CN105955771A (zh) * | 2016-04-27 | 2016-09-21 | 浪潮集团有限公司 | 一种实现操作系统的方法、装置及系统 |
CN108920606B (zh) * | 2018-06-28 | 2020-10-23 | 腾讯大地通途(北京)科技有限公司 | 地图数据处理方法、装置、终端设备及存储介质 |
CN109491725B (zh) * | 2018-11-12 | 2022-12-27 | 火烈鸟网络(广州)股份有限公司 | 应用程序可交互多开方法和系统、存储介质、电子设备 |
CN109976820B (zh) * | 2019-04-09 | 2020-03-03 | 苏州浪潮智能科技有限公司 | 一种应用程序运行方法和应用程序架构 |
CN112988353B (zh) * | 2021-03-12 | 2024-06-14 | 北京明朝万达科技股份有限公司 | 一种应用程序的运行控制方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8190682B2 (en) * | 2006-03-31 | 2012-05-29 | Amazon Technologies, Inc. | Managing execution of programs by multiple computing systems |
CN102929716A (zh) * | 2012-11-07 | 2013-02-13 | 北京亿赛通科技发展有限责任公司 | 一种启动多进程的方法 |
CN103677948A (zh) * | 2014-01-08 | 2014-03-26 | 从兴技术有限公司 | 一种启动器和启动方法 |
-
2014
- 2014-10-22 CN CN201410566774.0A patent/CN104375857B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8190682B2 (en) * | 2006-03-31 | 2012-05-29 | Amazon Technologies, Inc. | Managing execution of programs by multiple computing systems |
CN102929716A (zh) * | 2012-11-07 | 2013-02-13 | 北京亿赛通科技发展有限责任公司 | 一种启动多进程的方法 |
CN103677948A (zh) * | 2014-01-08 | 2014-03-26 | 从兴技术有限公司 | 一种启动器和启动方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104375857A (zh) | 2015-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104375857B (zh) | 一种应用程序运行多个实例的方法、装置及终端设备 | |
US10742694B2 (en) | Method for migrating data and terminal | |
CN107636613B (zh) | 到第三方应用的数字助理可扩展性 | |
JP7346606B2 (ja) | 画面共有処理方法、装置、機器及び記憶媒体 | |
US8239505B2 (en) | Progressively implementing declarative models in distributed systems | |
EP3355187A1 (en) | Loading method and device for terminal application (app) | |
CN109840418B (zh) | 应用程序的跳转控制方法、装置、存储介质及终端 | |
CN104268019A (zh) | 一种软件运行方法、装置及终端 | |
CN106484547B (zh) | 一种多开应用的管理方法、装置及终端 | |
CN112114913B (zh) | 应用程序的界面更新方法、装置、计算机设备和存储介质 | |
US10021213B2 (en) | Systems and methods for adaptive cloning of mobile devices | |
US20170147368A1 (en) | Dynamic Agent Delivery | |
US10404568B2 (en) | Agent manager for distributed transaction monitoring system | |
CN106066803B (zh) | 应用程序运行控制的方法及装置 | |
JP7106001B2 (ja) | サブアプリケーション開発方法、装置、コンピュータ機器、並びにコンピュータプログラム | |
CN106027631B (zh) | 一种数据传输方法及装置 | |
WO2019015491A1 (zh) | 应用程序的分身方法、装置、设备和介质 | |
CN107087018A (zh) | 一种运行Web应用程序的方法及终端 | |
KR20200042798A (ko) | 이종 운영체제의 실행을 제어하기 위한 방법, 이를 위한 전자 장치 및 저장 매체 | |
WO2013023440A1 (zh) | 一种应用管理方法及设备 | |
CN108132816B (zh) | 应用中实现本地框架层调用的方法和装置 | |
CN106502732B (zh) | 一种应用程序的关闭方法、装置及智能终端 | |
US10193737B2 (en) | Method for performing communication between browser and mobile terminal, and browser apparatus | |
CN111158788A (zh) | 桌面启动器控制方法、装置及存储介质 | |
CN111866557B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |