CN109669838B - 实现应用常驻的方法、装置、计算机设备及存储介质 - Google Patents
实现应用常驻的方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN109669838B CN109669838B CN201811353283.2A CN201811353283A CN109669838B CN 109669838 B CN109669838 B CN 109669838B CN 201811353283 A CN201811353283 A CN 201811353283A CN 109669838 B CN109669838 B CN 109669838B
- Authority
- CN
- China
- Prior art keywords
- processes
- mutual monitoring
- killed
- application
- fork
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了实现应用常驻的方法、装置、计算机设备及存储介质,其中方法包括:为需要常驻的应用运行N个进程,N为大于二的正整数;按照预定原则设置进程之间的相互监听关系,所述预定原则包括:当系统杀死任一进程并继续查杀下一进程时,至少存在一个与被杀死的进程存在相互监听关系的进程处于存活状态,以便利用处于存活状态的进程重启被杀死的进程。本发明所述方案可适用于各种Android版本,具有普遍适用性。
Description
【技术领域】
本发明涉及计算机应用技术,特别涉及实现应用常驻的方法、装置、计算机设备及存储介质。
【背景技术】
应用常驻,顾名思义,就是要让应用在内存中一直存在,即要让应用一直能够存活。
很多场景下,如果想要更好的为用户服务,需要有应用常驻,以便在特定的时候做特定的事情。比如,在安卓(Android)系统中,许多广播事件不支持静态注册,若想接收屏幕开关的系统广播,必须要在应用中动态注册广播接收器,如果锁屏应用无法一直存活,那么就无法正常监听到屏幕开关,为用户服务。另外,即时通讯(IM,Instant Messaging)类应用,也需要在后台维护一个长链接,以便及时将信息传达给用户。
普通应用无法像厂商级别应用或者大流量高优先级别的应用那样受到手机厂商的优待从而确保应用不会被系统清理掉,也就是说,普通应用经常会被系统在进程清理的时候杀死,因此需要找到一种方法来实现应用常驻。
现有的应用常驻方法只能在某些特定的Android版本上生效,比如针对Android4.4版本及以下,可以在native层fork出一个进程,来轮训监听应用是否存活,如果发现应用被杀死,主动将应用拉起来,从而实现应用常驻。
但是上述方法在Android 5.0版本及以上就无法生效了,适用范围有限。
【发明内容】
有鉴于此,本发明提供了实现应用常驻的方法、装置、计算机设备及存储介质。
具体技术方案如下:
一种实现应用常驻的方法,包括:
为需要常驻的应用运行N个进程,所述N为大于二的正整数;
按照预定原则设置进程之间的相互监听关系,所述预定原则包括:当系统杀死任一进程并继续查杀下一进程时,至少存在一个与所述被杀死的进程存在相互监听关系的进程处于存活状态,以便利用所述处于存活状态的进程重启所述被杀死的进程。
根据本发明一优选实施例,所述为需要常驻的应用运行N个进程包括:
从java层为所述应用启动第一进程和第二进程;
为所述第一进程fork出M个进程,为所述第二进程fork出M个进程,M为正整数,M=(N-2)/2。
根据本发明一优选实施例,
所述为所述第一进程fork出M个进程,为所述第二进程fork出M个进程包括:
为所述第一进程fork出一个第三进程,为所述第二进程fork出一个第四进程;
所述设置进程之间的相互监听关系包括:
设置所述第一进程与所述第二进程为相互监听关系;
设置所述第三进程与所述第四进程为相互监听关系。
根据本发明一优选实施例,所述为需要常驻的应用运行N个进程包括:从java层为所述应用启动N个进程。
根据本发明一优选实施例,所述N个进程包括:第一进程、第二进程和第三进程;
所述设置进程之间的相互监听关系包括:
设置所述第一进程与所述第二进程为相互监听关系;
设置所述第二进程与所述第三进程为相互监听关系;
设置所述第一进程与所述第三进程为相互监听关系。
根据本发明一优选实施例,处于相互监听关系的进程之间通过文件锁机制实现监听。
一种实现应用常驻的装置,包括:运行单元以及设置单元;
所述运行单元,用于为需要常驻的应用运行N个进程,所述N为大于二的正整数;
所述设置单元,用于按照预定原则设置进程之间的相互监听关系,所述预定原则包括:当系统杀死任一进程并继续查杀下一进程时,至少存在一个与所述被杀死的进程存在相互监听关系的进程处于存活状态,以便利用所述处于存活状态的进程重启所述被杀死的进程。
根据本发明一优选实施例,所述运行单元从java层为所述应用启动第一进程和第二进程,并为所述第一进程fork出M个进程,为所述第二进程fork出M个进程,M为正整数,M=(N-2)/2。
根据本发明一优选实施例,
所述运行单元为所述第一进程fork出一个第三进程,为所述第二进程fork出一个第四进程;
所述设置单元设置所述第一进程与所述第二进程为相互监听关系,设置所述第三进程与所述第四进程为相互监听关系。
根据本发明一优选实施例,所述运行单元从java层为所述应用启动N个进程。
根据本发明一优选实施例,所述N个进程包括:第一进程、第二进程和第三进程;
所述设置单元设置所述第一进程与所述第二进程为相互监听关系,设置所述第二进程与所述第三进程为相互监听关系,设置所述第一进程与所述第三进程为相互监听关系。
根据本发明一优选实施例,处于相互监听关系的进程之间通过文件锁机制实现监听。
一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如以上所述的方法。
一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如以上所述的方法。
基于上述介绍可以看出,采用本发明所述方案,可为需要常驻的应用运行N个进程,N为大于二的正整数,并可设置进程之间的相互监听关系,使得当系统杀死任一进程并继续查杀下一进程时,至少存在一个与被杀死的进程存在相互监听关系的进程处于存活状态,以便利用处于存活状态的进程重启被杀死的进程,从而实现了应用常驻,相比于现有方式,本发明所述方案可适用于各种Android版本,具有广泛适用性。
【附图说明】
图1为本发明所述实现应用常驻的方法实施例的流程图。
图2为本发明所述第一进程与第二进程以及第三进程与第四进程之间的相互监听方式示意图。
图3为本发明所述实现应用常驻的装置实施例的组成结构示意图。
图4示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。
【具体实施方式】
一个Android应用可以启动多个进程如进程a和进程b,系统在清理应用的时候,会把应用启动的相关进程全部杀死,也就是说,如果一个应用在存活期间启动了进程a和进程b,那么系统需要逐个将进程a和进程b杀死。在逐个杀死进程a和进程b的过程中,如果在系统杀死进程a但还没来得及杀死进程b时,进程b能够监听到进程a被杀死,并快速重启进程a,进程a重启后即相当于应用又复活了,反之亦然,从而实现应用总是能够在系统杀死自己的时候自身的进程相互监听,相互拉起,实现应用常驻,换句话说,就是要通过一定的手段达到应用的进程相互监听并重启对方比系统逐个杀死应用的所有进程更快的目的。
但是,随着手机硬件性能的不断提升,系统的不断优化,系统在清理一个应用的两个进程的时候,时间间隔会非常短,最多只有十几毫秒左右,个别高性能手机只有几毫秒,而目前已知的监听技术中,没有一种能够在如此短的时间内感知到所监听进程的死亡并重启,因此,需要通过一定的方式,加大系统杀死一个应用的两个相互监听的进程之间的时间间隔,从而为两个进程能够及时监听到对方被杀死并重启对方创造条件。
为了使本发明的技术方案更加清楚、明白,以下参照附图并举实施例,对本发明所述方案进行进一步说明。
显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明所述实现应用常驻的方法实施例的流程图。如图1所示,包括以下具体实现方式。
在101中,为需要常驻的应用运行N个进程,N为大于二的正整数。
在102中,按照预定原则设置进程之间的相互监听关系,所述预定原则包括:当系统杀死任一进程并继续查杀下一进程时,至少存在一个与被杀死的进程存在相互监听关系的进程处于存活状态,以便利用处于存活状态的进程重启被杀死的进程。
N的具体取值可根据实际需要而定。通过上述方式,使得被杀死的进程总是能够被重启,从而实现了应用常驻。
在实际应用中,图1所示流程可以有多种不同的实现方式,包括但不限于以下两种。
1)方式一
假设某个应用从java层(android:process)启动了两个进程,两个进程期望能够相互监听对方的存活,如果对方被杀死能够立刻监听到并将对方重启。系统先杀死了其中一个进程后,接着查杀另一个进程,这个时间间隔非常短,可能只有十几毫秒甚至几毫秒,目前还没有任何监听技术能够在如此短的时间内完成感知对方的死亡并重启对方的过程。因此需要采取一定的措施干涉系统杀死进程的过程,加大系统杀死一个应用的两个相互监听的进程之间的时间间隔。为此,本方式中提出了一种能够加大两个相互监听的进程被杀死的时间间隔的方法,即在两个相互监听的进程之间插入一个或多个进程,从而使得系统在杀死两个相互监听的进程中的一个后,下一个被杀死的不是对应的监听进程,而是插入的进程,这样两个相互监听的进程被杀死的时间间隔就被拉大了,拉大到能够让感知到对方死亡并重启对方的过程执行完,从而实现应用常驻。
通过研究发现,对于从java层启动的进程,系统会为其创建一个文件对这个进程进行记录,这个进程的子进程也会被记录在这个文件中,在需要清理应用时,能够通过文件的记录将应用的所有进程全部杀死清理掉。
如果让应用启动的两个进程相互监听,那么系统会为两个进程分别建立文件,记录两个进程的进程号,为后续的清理工作做准备。系统在清理应用的时候,会首先读取这两个文件中的一个,将文件中记录的进程号取出来并杀死对应的进程,然后再读取另外一个文件,将文件中记录的进程号取出来并杀死对应的进程。
从上述过程来看,如果能够让记录进程号的文件中记录至少两个进程号,并相应地设置进程间的相互监听方式,则能够获取足够的时间间隔,从而实现应用常驻。
具体地,可从java层为应用启动第一进程和第二进程。如可通过android:process在java层为应用配置两个进程,即第一进程和第二进程,应用需要实现常驻时通过启动组件的方式启动这两个进程。
并且,可为第一进程fork出M个进程,并为第二进程fork出M个进程,M为正整数,M=(N-2)/2,具体取值可根据实际需要而定。
优选地,可为第一进程fork出一个第三进程,为第二进程fork出一个第四进程。由于第三进程为fork出的第一进程的子进程,因此第三进程的进程号也会被写入到第一进程对应的文件中,类似地,由于第四进程为fork出的第二进程的子进程,因此第四进程的进程号也会被写入到第二进程对应的文件中。
进一步地,可按照以下原则设置进程之间的相互监听关系:当系统杀死任一进程并继续查杀下一进程时,至少存在一个与被杀死的进程存在相互监听关系的进程处于存活状态,以便利用处于存活状态的进程重启被杀死的进程。
比如,可设置第一进程与第二进程为相互监听关系,并设置第三进程与第四进程为相互监听关系。图2为本发明所述第一进程与第二进程以及第三进程与第四进程之间的相互监听方式示意图。
这样,就会存在两个文件,分别用于记录第一进程和第三进程的进程号以及第二进程和第四进程的进程号,即每个文件中分别记录有两个进程号。
系统在清理应用时,读取到一个文件后杀死记录的进程号对应的进程是有一定规律的。比如,可以先杀死第一进程再杀死第三进程,先杀死第二进程再杀死第四进程,或者,也可以先杀死第三进程再杀死第一进程,先杀死第四进程再杀死第二进程,但总体逻辑是一致的,如按照A(1,3)B(2,4)的顺序,或按照A(3,1)B(4,2)的顺序等,A和B分别表示两个文件,1、2、3和4分别表示第一进程、第二进程、第三进程和第四进程。
如果令第一进程与第二进程相互监听,第三进程与第四进程相互监听,系统在查杀这些进程时,中间必然间隔另外一个进程。比如,系统先查杀A(1)接着查杀A(3),之后才会查杀B(2),A(1)和B(2)之间还有一个杀死A(3)的过程。
无论系统先杀死哪个进程,与这个进程存在相互监听关系的进程都不会是下一个被杀死的进程,从而满足了“当系统杀死任一进程并继续查杀下一进程时,至少存在一个与被杀死的进程存在相互监听关系的进程处于存活状态,以便利用处于存活状态的进程重启被杀死的进程”的原则。
处于相互监听关系的进程之间可以通过文件锁机制实现监听。文件锁机制是目前最快且不耗电的监听方式。
2)方式二
该方式中,可从java层为应用启动N个进程。
优选地,N个进程可包括:第一进程、第二进程和第三进程,共启动三个进程。
进一步地,可按照以下原则设置进程之间的相互监听关系:当系统杀死任一进程并继续查杀下一进程时,至少存在一个与被杀死的进程存在相互监听关系的进程处于存活状态,以便利用处于存活状态的进程重启被杀死的进程。
比如,可设置第一进程与第二进程为相互监听关系,设置第二进程与第三进程为相互监听关系,设置第一进程与第三进程为相互监听关系。
这样,每个进程都与其它两个进程存在相互监听关系。当系统杀死第一进程接下来查杀第二进程时,第三进程可监听到第一进程被杀死,重启第一进程,当第二进程被杀死接下来查杀第三进程时,第一进程可监听到第二进程被杀死,重启第二进程,当第三进程被杀死接下来查杀第一进程时,第二进程可监听到第三进程被杀死,重启第三进程,依此类推,从而实现应用常驻。
处于相互监听关系的进程之间可以通过文件锁机制实现监听。文件锁机制是目前最快且不耗电的监听方式。
可以看出,无论采用上述哪种方式,均可实现应用常驻,任何采用了本发明所述方式的应用均相当于成为了Android系统的不死应用或者说超级应用,而且,相比于现有方式,本发明所述方式可适用于各种Android版本,具有广泛适用性。
需要说明的是,对于前述的方法实施例,为了简单描述,将其表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
以上是关于本发明方法实施例的介绍,以下通过装置实施例,对本发明所述方案进行进一步说明。
图3为本发明所述实现应用常驻的装置实施例的组成结构示意图。如图3所示,包括:运行单元301以及设置单元302。
运行单元301,用于为需要常驻的应用运行N个进程,N为大于二的正整数。
设置单元302,用于按照预定原则设置进程之间的相互监听关系,所述预定原则包括:当系统杀死任一进程并继续查杀下一进程时,至少存在一个与被杀死的进程存在相互监听关系的进程处于存活状态,以便利用处于存活状态的进程重启被杀死的进程。
N的具体取值可根据实际需要而定。通过上述方式,使得被杀死的进程总是能够被重启,从而实现了应用常驻。
在实际应用中,图3所示实施例可以有多种不同的实现方式,包括但不限于以下两种。
其中一种方式中,运行单元301可从java层为应用启动第一进程和第二进程,并为第一进程fork出M个进程,为第二进程fork出M个进程,M为正整数,M=(N-2)/2。
通过研究发现,对于从java层启动的进程,系统会为其创建一个文件对这个进程的进程号进行记录,这个进程的子进程也会被记录在这个文件中,在需要清理应用时,能够通过文件的记录将应用的所有进程全部杀死清理掉。
优选地,运行单元301可为第一进程fork出一个第三进程,为第二进程fork出一个第四进程。由于第三进程为fork出的第一进程的子进程,因此第三进程的进程号也会被写入到第一进程对应的文件中,类似地,由于第四进程为fork出的第二进程的子进程,因此第四进程的进程号也会被写入到第二进程对应的文件中。这样,就会存在两个文件,分别用于记录第一进程和第三进程的进程号以及第二进程和第四进程的进程号,即每个文件中分别记录有两个进程号。
进一步地,设置单元302可设置第一进程与第二进程为相互监听关系,设置第三进程与第四进程为相互监听关系。
系统在清理应用时,读取到一个文件后杀死记录的进程号对应的进程是有一定规律的。比如,可以先杀死第一进程再杀死第三进程,先杀死第二进程再杀死第四进程,或者,也可以先杀死第三进程再杀死第一进程,先杀死第四进程再杀死第二进程,但总体逻辑是一致的,如按照A(1,3)B(2,4)的顺序,或按照A(3,1)B(4,2)的顺序等,A和B分别表示两个文件,1、2、3和4分别表示第一进程、第二进程、第三进程和第四进程。
如果令第一进程与第二进程相互监听,第三进程与第四进程相互监听,系统在查杀这些进程时,中间必然间隔另外一个进程。比如,系统先查杀A(1)接着查杀A(3),之后才会查杀B(2),A(1)和B(2)之间还有一个杀死A(3)的过程。
无论系统先杀死哪个进程,与这个进程存在相互监听关系的进程都不会是下一个被杀死的进程。
处于相互监听关系的进程之间可以通过文件锁机制实现监听。文件锁机制是目前最快且不耗电的监听方式。
在另外一种方式中,运行单元301可从java层为应用启动N个进程。
优选地,N个进程可包括:第一进程、第二进程和第三进程,共启动三个进程。
相应地,设置单元302可设置第一进程与第二进程为相互监听关系,设置第二进程与第三进程为相互监听关系,设置第一进程与第三进程为相互监听关系。
这样,每个进程都与其它两个进程存在相互监听关系。当系统杀死第一进程接下来查杀第二进程时,第三进程可监听到第一进程被杀死,重启第一进程,当第二进程被杀死接下来查杀第三进程时,第一进程可监听到第二进程被杀死,重启第二进程,当第三进程被杀死接下来查杀第一进程时,第二进程可监听到第三进程被杀死,重启第三进程,依此类推,从而实现应用常驻。
处于相互监听关系的进程之间可以通过文件锁机制实现监听。文件锁机制是目前最快且不耗电的监听方式。
可以看出,无论采用上述哪种方式,均可实现应用常驻,任何采用了本发明所述方式的应用均相当于成为了Android系统的不死应用或者说超级应用,而且,相比于现有方式,本发明所述方式可适用于各种Android版本,具有广泛适用性。
图3所示装置实施例的具体工作流程请参照前述方法实施例中的相关说明,不再赘述。
图4示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图4显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器(处理单元)16,存储器28,连接不同系统组件(包括存储器28和处理器16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图4所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理器16通过运行存储在存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现图1所示实施例中的方法。
本发明同时公开了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时将实现如图1所示实施例中的方法。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法等,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (14)
1.一种实现应用常驻的方法,其特征在于,包括:
为需要常驻的应用运行N个进程,所述N为大于二的正整数;
按照预定原则设置所述N个进程之间的相互监听关系,以加大两个相互监听的进程被杀死的时间间隔,所述预定原则包括:当系统杀死任一进程并继续查杀下一进程时,至少存在一个与所述被杀死的进程存在相互监听关系的进程处于存活状态,以便利用所述处于存活状态的进程重启所述被杀死的进程;
其中,通过在两个相互监听的进程之间插入一个或多个进程,从而使得系统在杀死两个相互监听的进程中的一个后,下一个被杀死的不是对应的监听进程,而是插入的进程,从而加大两个相互监听的进程被杀死的时间间隔。
2.根据权利要求1所述的方法,其特征在于,
所述为需要常驻的应用运行N个进程包括:
从java层为所述应用启动第一进程和第二进程;
为所述第一进程fork出M个进程,为所述第二进程fork出M个进程,M为正整数,M=(N-2)/2。
3.根据权利要求2所述的方法,其特征在于,
所述为所述第一进程fork出M个进程,为所述第二进程fork出M个进程包括:
为所述第一进程fork出一个第三进程,为所述第二进程fork出一个第四进程;
所述设置进程之间的相互监听关系包括:
设置所述第一进程与所述第二进程为相互监听关系;
设置所述第三进程与所述第四进程为相互监听关系。
4.根据权利要求1所述的方法,其特征在于,
所述为需要常驻的应用运行N个进程包括:从java层为所述应用启动N个进程。
5.根据权利要求4所述的方法,其特征在于,
所述N个进程包括:第一进程、第二进程和第三进程;
所述设置进程之间的相互监听关系包括:
设置所述第一进程与所述第二进程为相互监听关系;
设置所述第二进程与所述第三进程为相互监听关系;
设置所述第一进程与所述第三进程为相互监听关系。
6.根据权利要求1所述的方法,其特征在于,
处于相互监听关系的进程之间通过文件锁机制实现监听。
7.一种实现应用常驻的装置,其特征在于,包括:运行单元以及设置单元;
所述运行单元,用于为需要常驻的应用运行N个进程,所述N为大于二的正整数;
所述设置单元,用于按照预定原则设置所述N个进程之间的相互监听关系,以加大两个相互监听的进程被杀死的时间间隔,所述预定原则包括:当系统杀死任一进程并继续查杀下一进程时,至少存在一个与所述被杀死的进程存在相互监听关系的进程处于存活状态,以便利用所述处于存活状态的进程重启所述被杀死的进程;
其中,通过在两个相互监听的进程之间插入一个或多个进程,从而使得系统在杀死两个相互监听的进程中的一个后,下一个被杀死的不是对应的监听进程,而是插入的进程,从而加大两个相互监听的进程被杀死的时间间隔。
8.根据权利要求7所述的装置,其特征在于,
所述运行单元从java层为所述应用启动第一进程和第二进程,并为所述第一进程fork出M个进程,为所述第二进程fork出M个进程,M为正整数,M=(N-2)/2。
9.根据权利要求8所述的装置,其特征在于,
所述运行单元为所述第一进程fork出一个第三进程,为所述第二进程fork出一个第四进程;
所述设置单元设置所述第一进程与所述第二进程为相互监听关系,设置所述第三进程与所述第四进程为相互监听关系。
10.根据权利要求7所述的装置,其特征在于,
所述运行单元从java层为所述应用启动N个进程。
11.根据权利要求10所述的装置,其特征在于,
所述N个进程包括:第一进程、第二进程和第三进程;
所述设置单元设置所述第一进程与所述第二进程为相互监听关系,设置所述第二进程与所述第三进程为相互监听关系,设置所述第一进程与所述第三进程为相互监听关系。
12.根据权利要求7所述的装置,其特征在于,
处于相互监听关系的进程之间通过文件锁机制实现监听。
13.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1~6中任一项所述的方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1~6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811353283.2A CN109669838B (zh) | 2018-11-14 | 2018-11-14 | 实现应用常驻的方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811353283.2A CN109669838B (zh) | 2018-11-14 | 2018-11-14 | 实现应用常驻的方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109669838A CN109669838A (zh) | 2019-04-23 |
CN109669838B true CN109669838B (zh) | 2022-05-27 |
Family
ID=66142820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811353283.2A Active CN109669838B (zh) | 2018-11-14 | 2018-11-14 | 实现应用常驻的方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109669838B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448695A (zh) * | 2020-03-24 | 2021-09-28 | 百度在线网络技术(北京)有限公司 | 一种实现进程持续存在的方法、装置、电子设备和介质 |
CN113760492A (zh) * | 2020-11-04 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种程序进程保活方法、系统、装置、设备以及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103399818A (zh) * | 2013-08-13 | 2013-11-20 | 中国科学技术大学苏州研究院 | 操作系统中的死锁检测方法 |
CN105303103A (zh) * | 2015-10-14 | 2016-02-03 | 北京奇虎科技有限公司 | 保护移动终端中的服务进程的方法和移动终端 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335171B (zh) * | 2014-06-24 | 2019-05-10 | 北京奇虎科技有限公司 | 应用程序常驻操作系统后台的方法及装置 |
CN106933658A (zh) * | 2015-12-29 | 2017-07-07 | 北京明朝万达科技股份有限公司 | 一种操作系统中后台进程防杀死的方法和装置 |
CN106776206A (zh) * | 2016-12-03 | 2017-05-31 | 乐视控股(北京)有限公司 | 监听进程状态的方法、装置及电子设备 |
CN106648863B (zh) * | 2016-12-08 | 2020-01-03 | 武汉斗鱼网络科技有限公司 | 一种安卓应用安装包、应用目标进程保活方法及系统 |
CN106951335B (zh) * | 2017-02-28 | 2020-08-04 | 维沃移动通信有限公司 | 一种进程守护方法和移动终端 |
-
2018
- 2018-11-14 CN CN201811353283.2A patent/CN109669838B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103399818A (zh) * | 2013-08-13 | 2013-11-20 | 中国科学技术大学苏州研究院 | 操作系统中的死锁检测方法 |
CN105303103A (zh) * | 2015-10-14 | 2016-02-03 | 北京奇虎科技有限公司 | 保护移动终端中的服务进程的方法和移动终端 |
Also Published As
Publication number | Publication date |
---|---|
CN109669838A (zh) | 2019-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110083399B (zh) | 小程序运行方法、计算机设备及存储介质 | |
US9355002B2 (en) | Capturing trace information using annotated trace output | |
US10055436B2 (en) | Alert management | |
CN109669838B (zh) | 实现应用常驻的方法、装置、计算机设备及存储介质 | |
CN111111201B (zh) | 一种基于游戏的技能创建方法、装置、服务器及介质 | |
US10893113B2 (en) | Generating push notifications | |
CN109241128B (zh) | 一种过期事件自动触发方法及系统 | |
CN110555150A (zh) | 一种数据监控方法、装置、设备和存储介质 | |
US10922162B2 (en) | Capturing video data and serial data during an information handling system failure | |
CN111026945B (zh) | 多平台爬虫调度方法、装置和存储介质 | |
GB2521637A (en) | Messaging digest | |
CN109408281A (zh) | 用于无头服务器可管理性和自主日志记录的技术 | |
US9852171B2 (en) | Index masking based on insert contention ratio | |
CN110908644B (zh) | 状态节点的配置方法、装置、计算机设备和存储介质 | |
CN110443062B (zh) | 多租户数据库的操作方法、装置和计算机设备 | |
CN110113443B (zh) | 社交角色管理方法、计算机设备及存储介质 | |
US20120311117A1 (en) | Object Pipeline-Based Virtual Infrastructure Management | |
US10579575B2 (en) | Systems and methods of management console user interface pluggability | |
CN113722007B (zh) | Vpn分支设备的配置方法、装置及系统 | |
CN112000491B (zh) | 一种应用程序接口调用方法、装置、设备和存储介质 | |
US11556542B2 (en) | Optionally compressed output from command-line interface | |
CN114356290A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN110647527B (zh) | 基于大数据的无效标签清除方法及装置、设备与可读介质 | |
CN110602162B (zh) | 终端取证方法、装置、设备和存储介质 | |
CN112988192A (zh) | 版本更新方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |