具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
本发明实施例提供的一种多进程的调起方法应用于安卓***中,该安卓***中通常安装有多个应用程序,每个应用程序运行提供服务时,均需要进程为应用程序提供***资源,以使得应用程序能够正常运行为用户提供相关服务。但是在实际使用时,若电子设备,如手机,同时段打开了很多应用将导致手机内存不足,进而手机***为了保证部分重要的进程能够顺利运行,将强杀相对不重要的进程,如后台的下载进程。由于后台的下载进程相较于用于界面显示的进程,其优先级和重要程度更低,故在***资源有限的情况下,将会被优先强杀。由于进程被强杀后,***将限制该进程再次被自启动,故给用户带来了不好的用户体验。由此,本发明实施例提供一种多进程的调起方法,通过将各个进程的服务相互绑定,以实现进程之间的相互监督,以及时调起被***强杀的进程,及时恢复服务,进而提高用户的体验感。
本发明实施例提供的一种多进程的调起方法应用于终端设备,该终端设备上安装有安卓***,则容易理解的,该终端设备可以是,但不限于,平板电脑、智能手机等智能电子设备。请参照图1,是本发明实施例提供的一种终端设备100的结构示意图,该终端设备100包括多进程的调起装置110、存储器120、存储控制器130、处理器140、外设接口150、输入输出单元160、音频单元170以及显示单元180。
所述存储器120、存储控制器130、处理器140、外设接口150、输入输出单元160、音频单元170、显示单元180各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。该多进程的调起装置110包括至少一个可以软件或固件(firmware)的形式存储于所述存储器120中或固化在所述终端设备100的操作***(operating system,OS)中的软件功能模块。所述处理器140用于执行存储器120中存储的可执行模块,例如所述多进程的调起装置110包括的软件功能模块或计算机程序。
其中,存储器120可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存储器120用于存储程序,所述处理器140在接收到执行指令后,执行所述程序,本发明实施例任一实施例揭示的流过程定义的终端设备100所执行的方法可以应用于处理器140中,或者由处理器140实现。
处理器140可能是一种集成电路芯片,具有信号的处理能力。上述的处理器140可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器140也可以是任何常规的处理器140等。
所述外设接口150将各种输入/输出装置耦合至处理器140以及存储器120。在一些实施例中,外设接口150,处理器140以及存储控制器130可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
输入输出单元160用于提供给用户输入数据实现用户与终端设备100的交互。所述输入输出单元160可以是,但不限于,鼠标和键盘等。
音频单元170向用户提供音频接口,其可包括一个或多个麦克风、一个或者多个扬声器以及音频电路。
显示单元180在终端设备100与用户之间提供一个交互界面(例如用户操作界面)或用于显示图像数据给用户参考。在本实施例中,所述显示单元180可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器140进行计算和处理。
请参照图2,是本发明实施例提供的一种多进程的调起方法的流程示意图,该方法包括:
步骤S110,触发主进程。
具体为,该主进程为用于界面显示的进程,该触发手段一般有两种,响应用户的行为或安卓***的行为触发主进程。如当用户点击“pp助手”
这个应用程序的图标时,将会触发主进程,或是当安装有“pp助手”应用程序的终端设备由无网状态连接入网成为有网状态时,也将会触发主进程。
步骤S120,所述主进程调用所述第一原生API启动第一服务。
该第一原生API为安卓***提供的原生的应用程序接口startService,其中,API的全称为Application Program Interface,中文译文为应用程序接口。即是说,该主进程将调用startService启动第一服务。
步骤S130,所述第一服务调用所述第一原生API启动第二服务,且所述安卓***根据所述预先声明的服务与进程之间的映射关系调起所述第二服务所在的进程。
具体为,第一服务启动后,将调用第一原生API启动第二服务,需要说明的是,该第一服务和第二服务位于同一应用程序的不同进程中,以使得多个进程之间可以通过各自的服务进行绑定和监督。进而,该安卓***将根据预先声明的服务与进程之间的映射关系调起第二服务所在的进程,即是说,该服务将会事先声明所在的进程,则当第二服务启动后,该安卓***将随之调起第二服务所在的进程。
步骤S140,所述第一服务调用所述第二原生API绑定所述第二服务,并监听所述第二服务的连接断开事件。
其中,第二原生API为安卓***提供的原生的应用程序接口bindService。即是说,当第二服务启动后,该第一服务将调用该bindService绑定第二服务,在第一服务绑定第二服务时,将生成第二服务的“onServiceDisconnected”连接断开事件,于是,该第一服务还通过ServiceConnection接口对第二服务的连接断开事件进行监听。
步骤S150,当所述第二服务的连接断开事件被触发时,所述第一服务调用所述第一原生API启动所述第二服务,且所述安卓***将根据预先声明的服务与进程的对应关系,调起所述第二服务所在的进程。
具体为,当第二服务的连接断开事件被触发时,表明该第二服务所在的进程被***强杀,由于第一服务与第二服务已经建立了绑定关系,则第一服务将及时监听得到第二服务已经被强杀。进而,第一服务将重新调用第一原生API启动第二服务,该安卓***也将根据预先声明的服务与进程的对应关系,调起第二服务所在的进程,使得第二服务所在的进程恢复,第二服务得以正常运行,保证了用户体验。
由此可见,由于各个进程之间相互独立,故无法对进程进行绑定,但对各个进程的服务进行绑定,通过对服务状态的监督,达到了对各个进程状态的监督,以当其中一个进程被强杀时,另一个进程上的服务能迅速对绑定的服务进行“拯救”。
步骤S160,所述第一服务调用所述第二原生API重新绑定所述第二服务,并重新监听所述第二服务的连接断开事件。
为了保证第一服务和第二服务的长期监督,当第二服务所在的进程被强杀,第一服务通过启动第二服务,从而使安卓***调起第二服务所在的进程后,第一服务还应当重新绑定第二服务,以对第二服务的后续状态继续监测。具体为,该第一服务调用第二原生API重新绑定第二服务,并通过ServiceConnection接口监听第二服务的“onServiceDisconnected”连接断开事件。
除了第一服务可以对第二服务进行绑定和监听外,第二服务也可以对第一服务进行绑定和监听,以实现第一服务和第二服务之间的双向监督。该第二服务对第一服务进行绑定和监听是在第一服务启动第二服务后执行,具体请参照图3,是本发明实施例提供的另一种多进程的调起方法的流程示意图,该方法包括:
步骤S210,触发主进程。
具体为,该主进程为用于界面显示的进程,该触发手段一般有两种,响应用户的行为或安卓***的行为触发主进程。如当用户点击“pp助手”这个应用程序的图标时,将会触发主进程,或是当安装有“pp助手”应用程序的终端设备由无网状态连接入网成为有网状态时,也将会触发主进程。
步骤S220,所述主进程调用所述第一原生API启动第一服务。
该第一原生API为安卓***提供的原生的应用程序接口startService,其中,API的全称为Application Program Interface,中文译文为应用程序接口。即是说,该主进程将调用startService启动第一服务。
步骤S230,所述第一服务调用所述第一原生API启动第二服务,且所述安卓***根据所述预先声明的服务与进程之间的映射关系调起所述第二服务所在的进程。
具体为,第一服务启动后,将调用第一原生API启动第二服务,需要说明的是,该第一服务和第二服务位于同一应用程序的不同进程中,以使得多个进程之间可以通过各自的服务进行绑定和监督。进而,该安卓***将根据预先声明的服务与进程之间的映射关系调起第二服务所在的进程,即是说,该服务将会事先声明所在的进程,则当第二服务启动后,该安卓***将随之调起第二服务所在的进程。
步骤S240,所述第二服务调用所述第二原生API绑定所述第一服务,并监听所述第一服务的连接断开事件。
即是说,在第二服务启动后,第一服务调用第二原生API绑定第二服务的同时,该第二服务也将调用第二原生API绑定第一服务,并通过ServiceConnection接口监听第一服务的“onServiceDisconnected”连接断开事件。
步骤S250,当所述第一服务的连接断开事件被触发时,所述第二服务调用所述第一原生API启动所述第一服务,且所述安卓***将根据所述预先声明的服务与进程的对应关系,调起所述第一服务所在的进程。
具体为,当第一服务的连接断开事件被触发时,表明第一服务所在的进程被***强杀,则该第二服务将重新调用第一原生API启动第一服务,进而该安卓***将根据预先声明的服务与进程的对应关系,调起第一服务所在的进程,以保证第一服务的正常运行,提高用户体验。
步骤S260,所述第二服务调用所述第二原生API重新绑定所述第一服务,并重新监听所述第一服务的连接断开事件。
同理可知,为了保证第二服务能够长期监督第一服务的状态,该第二服务在第一次启动第一服务,且安卓***调起第一服务所在的进程后,第二服务还应该重新调用第二原生API再次绑定第一服务,以继续通过ServiceConnection接口监听第一服务的“onServiceDisconnected”连接断开事件。
由此可见,本方案通过不同服务之间的绑定,实现进程之间的相互保活,解决了某个进程被***强杀,由于不能自启动导致对应的服务被暂停的问题,提高了用户体验。此外,本方案中服务之间的启动和绑定均采用原生的API,不存在手机厂商定制***导致的兼容性问题,扩宽了应用范围。
作为另一种实施方式,本发明实施例提供的一种多进程的调起方法不仅应用于双进程之间,还可用于多个进程之间。以三个进程为例进行说明,如包括第一进程、第二进程和第三进程,第一进程对应服务A、第二进程对应服务B、第三进程对应服务C,具体为:
若第一进程启动服务A后,服务A启动服务B,服务B启动服务C(或服务A启动服务C),并随之调起服务B对应的第二进程,服务C对应的第三进程。进而,服务A绑定服务B并对服务B的连接断开事件进行监听,服务B绑定服务C并对服务C的连接断开事件进行监听,服务C绑定服务A并对服务A的连接断开事件进行监听。则当任意一个服务的连接断开事件被触发时,负责监听的服务都将重新启动该服务,***将调起该服务对应的进程,负责监听的服务还进行重新进行绑定以便于在后续的时段内继续监听。
另一种方式,第一进程启动服务A,服务A启动服务B,服务B启动服务C,并随之调起服务B对应的第二进程,服务C对应的第三进程。进而服务A绑定服务B并对服务B的连接断开事件进行监听,服务A绑定服务C并对服务C的连接断开事件进行监听,服务C绑定服务A并对服务A的连接断开事件进行监听。当服务B或服务C中的一个或两个的连接断开事件被触发时,该服务A将重新启动服务B和/或服务C,***将调起服务B和/或服务C对应的进程,并重新进行绑定。容易理解的,当服务B和服务C的连接断开事件被同时触发时,亦即是说,服务B和服务C所在的进程被同时强杀时,该服务A不必一定要对服务B和服务C都启动,可选择地只启动一个,其具体实施方式可根据需要自定义设置。
需要说明的是,此处只是示例性地列出了多个进程之间的绑定方法,其绑定形式多种多样,可根据实际需要进行设置。
请参照图3,是本发明实施例提供的一种多进程的调起装置110的功能模块示意图,该装置包括触发模块111、第一启动模块112、第二启动模块113、第一监听模块114、第一调用模块115、第一绑定模块116、第二监听模块117、第二调用模块118以及第二绑定模块119。
触发模块111,用于触发主进程。
在本发明实施例中,步骤S110和步骤S210可以由触发模块111执行。
第一启动模块112,用于所述主进程调用所述第一原生API启动第一服务。
在本发明实施例中,步骤S120和步骤S220可以由第一启动模块112执行。
第二启动模块113,用于所述第一服务调用所述第一原生API启动第二服务,且所述安卓***根据预先声明的服务与进程之间的映射关系调起所述第二服务所在的进程。
在本发明实施例中,步骤S130和步骤S230可以由第二启动模块113执行。
第一监听模块114,用于第一服务监听与第一服务建立绑定关系的第二服务的连接断开事件,所述第一服务和第二服务位于同一应用程序的不同进程。
在本发明实施例中,步骤S140可以由第一监听模块114执行。
第一调用模块115,用于当所述第二服务的连接断开事件被触发时,所述第一服务调用所述第一原生API启动所述第二服务,且所述安卓***将根据预先声明的服务与进程的对应关系,调起所述第二服务所在的进程。
在本发明实施例中,步骤S150可以由第一调用模块115执行。
第一绑定模块116,用于所述第一服务调用所述第二原生API重新绑定所述第二服务,并重新监听所述第二服务的连接断开事件。
在本发明实施例中,步骤S160可以由第一绑定模块116执行。
第二监听模块117,用于所述第二服务调用所述第二原生API绑定所述第一服务,并监听所述第一服务的连接断开事件。
在本发明实施例中,步骤S240可以由第二监听模块117执行。
第二调用模块118,用于当所述第一服务的连接断开事件被触发时,所述第二服务调用所述第一原生API启动所述第一服务,且所述安卓***将根据所述预先声明的服务与进程的对应关系,调起所述第一服务所在的进程。
在本发明实施例中,步骤S250可以由第二调用模块118执行。
第二绑定模块119,用于所述第二服务调用所述第二原生API重新绑定所述第一服务,并重新监听所述第一服务的连接断开事件。
在本发明实施例中,步骤S260可以由第二绑定模块119执行。
由于在多进程的调起方法中已经详细描述,在此不再赘述。
本发明实施例还揭示了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器140执行时实现本发明实施例提供的多进程的调起方法。
综上所述,本发明实施例提供的一种多进程的调起方法、装置、终端设备及计算机存储介质,该多进程的调起方法应用于安卓***,该安卓***设置的原生API包括第一原生API和第二原生API,该安卓***上安装有多个应用程序,每个应用程序对应多个进程,每个进程上运行多个服务。该方法包括:第一服务监听与第一服务建立绑定关系的第二服务的连接断开事件,第一服务和第二服务位于同一应用的不同进程,当第二服务的连接断开事件被触发时,第一服务调用第一原生API启动第二服务,且安卓***将根据预先声明的服务与进程的对应关系,调起第二服务所在的进程。
由此可见,本方案中,将不同进程中的第一服务和第二服务建立绑定关系,以实现第一服务和第二服务的相互监督,若其中一个服务的连接断开事件被触发,则另一个服务将重新启动该服务并调起其所在的进程,以实现进程的保活。由于是服务之间的相互绑定和监督,使得一旦一方服务所在的进程被强杀,另一方服务都能快速响应,以保证能快速调起被强杀的服务所在的进程,提高用户体验感。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。