CN107678782A - 一种进程保护方法、装置、设备以及计算机可读存储介质 - Google Patents
一种进程保护方法、装置、设备以及计算机可读存储介质 Download PDFInfo
- Publication number
- CN107678782A CN107678782A CN201710827274.1A CN201710827274A CN107678782A CN 107678782 A CN107678782 A CN 107678782A CN 201710827274 A CN201710827274 A CN 201710827274A CN 107678782 A CN107678782 A CN 107678782A
- Authority
- CN
- China
- Prior art keywords
- application process
- application
- service processes
- service
- program
- 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
Links
Classifications
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44552—Conflict resolution, i.e. enabling coexistence of conflicting executables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种进程保护方法、装置、设备以及计算机可读存储介质,其中,所述方法包括:若检测到一应用进程正在运行,生成与所述应用进程相对应的服务进程;建立所述服务进程与所述应用进程之间的连接关系;控制所述服务进程启动针对所述应用进程的保护程序;若检测到用于停止所述应用进程的停止事件时,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行。本发明可以提高保护用户所希望运行的应用程序的效率,改善用户的使用体验。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种进程保护方法、装置、设备以及计算机可读存储介质。
背景技术
随着科技技术的飞速发展,很多智能电子产品(如智能手机、平板电脑等)可以安装各种应用软件,但是所安装的应用软件的运行需要依赖智能电子产品自身安装的系统,该系统为操作系统(如安卓操作系统、windows操作系统、ios操作系统等),由于内存资源紧张或者系统本身的运行机制,会将后台运行的应用程序的进程杀死,从而导致用户所希望运行的应用程序无法继续正常运行的问题。基于上述问题,目前所采用的处理方法比较费电,并且解决问题的效率不高、影响体验,例如,通过双进程监测的方法,或者fork子进程的方法等等。另外,在应用程序运行过程中,当主线程阻塞5s未响应或者广播接收器10s未执行完时,系统就会报错,例如出现应用程序无响应(Application Not Responding,ANR),而且此时查看调试日志并不能获得导致出现ANR问题的具体信息,导致开发人员不能准确找出导致ANR问题的原因。
发明内容
本发明实施例提供一种进程保护方法、装置、设备以及计算机可读存储介质,可以提高保护应用程序的效率,改善用户的使用体验。
一方面,本发明实施例提供了一种进程保护方法,该方法包括:
若检测到一应用进程正在运行,生成与所述应用进程相对应的服务进程;
建立所述服务进程与所述应用进程之间的连接关系;
控制所述服务进程启动针对所述应用进程的保护程序;
若检测到用于停止所述应用进程的停止事件时,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行。
进一步地,在所述建立所述服务进程与所述应用进程之间的连接关系之后,所述方法还包括:
获取与所述服务进程相对应的分叉子进程;
在所述分叉子进程中创建定时器;
设置所述定时器的时间间隔;
根据所述时间间隔控制所述应用进程显示运行信息的操作。
进一步地,在所述建立所述服务进程与所述应用进程之间的连接关系之后,所述方法还包括:
获取与所述服务进程相对应的分叉子进程;
在所述分叉子进程中设置无障碍服务类;
调用所述无障碍服务类中预设的方法项;
根据所述预设的方法项获取所述应用进程的运行信息。
进一步地,所述调用的无障碍服务类中预设的方法项,包括:
若检测到符合无障碍服务设定的无障碍事件过滤参数事件时,调用所述预设方法项;
传递关联的无障碍事件并向用户反馈。
进一步地,在所述若检测到某一应用进程正在运行,生成与所述应用进程相对应的服务进程之后,所述方法包括:
创建监测线程;
根据所述监测线程向所述应用进程指示或者派发任务;
记录所述任务指示或者派发的时间戳;
监测所述时间戳是否发生变化;
若检测到所述时间戳未发生变化,判定所述应用进程处于ANR状态。
另一方面,本发明实施例提供了一种进程保护装置,该装置包括:
生成单元,用于若检测到一应用进程正在运行,生成与所述应用进程相对应的服务进程;
建立单元,用于建立所述服务进程与所述应用进程之间的连接关系;
第一控制单元,用于控制所述服务进程启动针对所述应用进程的保护程序;
第二控制单元,用于若检测到用于停止所述应用进程的停止事件时,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行。
进一步地,所述装置还包括:
第一获取单元,用于获取与所述服务进程相对应的分叉子进程;
创建单元,用于在所述分叉子进程中创建定时器;
第一设置单元,用于设置所述定时器的时间间隔;
第三控制单元,用于根据所述时间间隔控制所述应用进程显示运行信息的操作。
进一步地,所述装置还包括:
第二获取单元,用于获取与所述服务进程相对应的分叉子进程;
第二设置单元,用于在所述分叉子进程中设置无障碍服务类;
调用单元,用于调用所述无障碍服务类中预设的方法项;
第三获取单元,用于根据所述预设的方法项获取所述应用进程的运行信息;
所述调用单元,包括:
调用子单元,用于若检测到符合无障碍服务设定的无障碍事件过滤参数事件时,调用所述预设方法项;
反馈单元,用于传递关联的无障碍事件并向用户反馈;
所述装置还包括:
创建单元,用于创建监测线程;
执行单元,用于根据所述监测线程向所述应用进程指示或者派发任务;
记录单元,用于记录所述任务指示或者派发的时间戳;
监测单元,用于监测所述时间戳是否发生变化;
判定单元,用于若检测到所述时间戳未发生变化,判定所述应用进程处于ANR状态。
又一方面,本发明实施例还提供了一种进程保护设备,包括:
存储器,用于存储实现进程保护的程序;以及
处理器,用于运行所述存储器中存储的实现进程保护的程序,以执行如上所述方法。
再一方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者一个以上程序,所述一个或者一个以上程序可被一个或者一个以上的处理器执行,以实现如上所述方法。
本发明实施例通过若检测到一应用进程正在运行,生成与所述应用进程相对应的服务进程;建立所述服务进程与所述应用进程之间的连接关系;控制所述服务进程启动针对所述应用进程的保护程序;若检测到用于停止所述应用进程的停止事件时,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行,从而可以提高保护用户所希望运行的应用程序的效率,改善用户的使用体验。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种进程保护方法的示意流程图;
图2是本发明实施例提供的一种进程保护方法的另一示意流程图;
图3是本发明实施例提供的一种进程保护方法的另一示意流程图;
图4是本发明实施例提供的一种进程保护方法的另一示意流程图;
图5是本发明实施例提供的一种进程保护方法的另一示意流程图;
图6是本发明实施例提供的一种进程保护装置的示意性框图;
图7是本发明实施例提供的一种进程保护装置的另一示意性框图;
图8是本发明实施例提供的一种进程保护装置的另一示意性框图;
图9是本发明实施例提供的一种进程保护装置的另一示意性框图;
图10是本发明实施例提供的一种进程保护装置的另一示意性框图;
图11是本发明实施例提供的一种进程保护设备结构组成示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
请参阅图1,图1是本发明实施例提供的一种进程保护方法的示意流程图。该方法可以运行在智能手机(如Android手机、IOS手机等)、平板电脑、笔记本电脑以及智能设备等终端中。本发明实施例所述的进程保护方法可以提高保护用户所希望运行的应用程序的效率,改善用户的使用体验。图1是本发明实施例提供的一种进程保护方法的示意流程图。该方法包括步骤S101~S104。
S101,若检测到一应用进程正在运行,生成与所述应用进程相对应的服务进程。
在本发明实施例中,在终端开启时,用户可以选择相对应的应用程序的开启,在开启应用程序时,与应用程序对应的应用进程便开始运行。其中,应用程序是指用户可以看得见并感觉得到的程序,例如微信、word、photoshop等,应用进程指的是一般用户可能感觉不到它的存在,并作为应用程序的执行实体而存在,例如一些服务、windows内核等计算机程序,他们在后台中默默的运行着。具体的,一个“应用程序”一定可以找到一个“应用进程”与其对应,但一个“应用进程”不一定会有一个“应用程序”与其对应,有些应用进程可能是后台的运行进程,用户无法看到,也无法感觉到。
需要说明的是,若应用进程保持运行,则与该应用进程相对应的应用程序可以被使用,若应用进程被杀掉,即被停止运行,则与该应用进程相对应的应用程序将被关闭。若检测到某一应用进程正在运行,生成与所述应用进程相对应的服务进程,可选的,可以利用终端系统的漏洞来生成一个服务进程,所生成的服务进程不会在终端系统的通知栏处出现,服务进程的运行就如同运行着一个后台service进程一样,生成的方法如下:(1)若当前应用程序(Application Programming Interface,API)编程接口数量小于18,在前台Service中直接传入Notification()函数;(2)若API编程接口数量大于或者等于18,同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理。
S102,建立所述服务进程与所述应用进程之间的连接关系。
在本发明实施例中,当为应用程序创建服务进程之后,终端需要建立服务进程和应用进程之间的连接,通过监控该连接的状态,确定是否需要对与服务进程相对应的应用程序进行保护。其中,终端为服务进程创建了套接口,监测服务进程和应用进程之间的连接即为监测服务进程的套接口和应用进程的套接口之间的连接。通过建立服务进程和应用进程之间的连接关系,终端可以建立应用程序的服务进程和应用进程之间的连接,并且通过该连接来实现数据传输,并通过监听该连接是否中断来判断应用程序的状态,对应用程序的状态确定过程方便快捷,系统时延小,系统资源消耗小。
S103,控制所述服务进程启动针对所述应用进程的保护程序。
在本发明实施例中,启动针对所述应用进程的保护程序,可选的,若当前应用程序(Application Programming Interface,API)编程接口数量小于18,在前台Service中直接传入Notification()函数,设置定时唤醒应用程序的时间间隔,并通过发送唤醒广播来促使已挂掉的应用进程重新启动,其中,该时间间隔可以是5分钟、10分钟,或者其他时间,具体的时间间隔在此不作限定;若API编程接口数量大于或者等于18,同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理,并通过使用Hack手段对正在被杀掉的应用进程作保活,即通过提高被保护的应用进程的优先级,在应用进程将要面临被杀掉时,利用被保护的应用进程的优先级高于其他进程而不被杀掉以达到保活的目的。
S104,若检测到用于停止所述应用进程的停止事件时,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行。
在本发明实施例中,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行,可选的,若应用进程中断时,应用进程和服务进程之间的连接便会中断,服务进程会接收到应用进程中断通知消息,服务进程一旦接收到中断通知消息,即确定应用程序可能已被中断,将重新启动应用程序的应用进程中的部分或者全部功能;可选的,若应用进程将被中断时,通过使用Hack手段对正在被杀掉的应用进程作保活,通过提高被保护的应用进程的优先级,在应用进程将要面临被杀掉时,利用被保护的应用进程的优先级高于其他进程而不被杀掉以达到保活的目的。
由以上可见,通过若检测到某一应用进程正在运行,生成与所述应用进程相对应的服务进程;建立所述服务进程与所述应用进程之间的连接关系;控制所述服务进程启动针对所述应用进程的保护程序;若检测到用于停止所述应用进程的停止事件时,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行,从而可以提高保护用户所希望运行的应用程序的效率,改善用户的使用体验。
请参阅图2,图2是本发明实施例提供的一种进程保护方法的示意流程图。该方法可以运行在智能手机(如Android手机、IOS手机等)、平板电脑、笔记本电脑以及智能设备等终端中。本发明实施例所述的进程保护方法可以提高保护用户所希望运行的应用程序的效率,改善用户的使用体验。图2是本发明实施例提供的一种进程保护方法的示意流程图。该方法包括步骤S201~S208。
S201,若检测到一应用进程正在运行,生成与所述应用进程相对应的服务进程。
在本发明实施例中,在终端开启时,用户可以选择相对应的应用程序的开启,在开启应用程序时,与应用程序对应的应用进程便开始运行。其中,应用程序是指用户可以看得见并感觉得到的程序,例如微信、word、photoshop等,应用进程指的是一般用户可能感觉不到它的存在,并作为应用程序的执行实体而存在,例如一些服务、windows内核等计算机程序,他们在后台中默默的运行着。具体的,一个“应用程序”一定可以找到一个“应用进程”与其对应,但一个“应用进程”不一定会有一个“应用程序”与其对应,有些应用进程可能是后台的运行进程,用户无法看到,也无法感觉到。
需要说明的是,若应用进程保持运行,则与该应用进程相对应的应用程序可以被使用,若应用进程被杀掉,即被停止运行,则与该应用进程相对应的应用程序将被关闭。若检测到某一应用进程正在运行,生成与所述应用进程相对应的服务进程,可选的,可以利用终端系统的漏洞来生成一个服务进程,所生成的服务进程不会在终端系统的通知栏处出现,服务进程的运行就如同运行着一个后台service进程一样,生成的方法如下:(1)若当前应用程序(Application Programming Interface,API)编程接口数量小于18,在前台Service中直接传入Notification()函数;(2)若API编程接口数量大于或者等于18,同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理。
S202,建立所述服务进程与所述应用进程之间的连接关系。
在本发明实施例中,当为应用程序创建服务进程之后,终端需要建立服务进程和应用进程之间的连接,通过监控该连接的状态,确定是否需要对与服务进程相对应的应用程序进行保护。其中,终端为服务进程创建了套接口,监测服务进程和应用进程之间的连接即为监测服务进程的套接口和应用进程的套接口之间的连接。通过建立服务进程和应用进程之间的连接关系,终端可以建立应用程序的服务进程和应用进程之间的连接,并且通过该连接来实现数据传输,并通过监听该连接是否中断来判断应用程序的状态,对应用程序的状态确定过程方便快捷,系统时延小,系统资源消耗小。
S203,获取与所述服务进程相对应的分叉子进程。
在本发明实施例中,将所述服务进程fork出来的子进程作为所述分叉子进程,将分叉子进程的上一级进程称为父进程,在分叉子进程与父进程之间具体某种特性,即当父进程被杀掉后,与其相关的分叉子进程仍然可以存活,并且不受父进程的影响。
S204,在所述分叉子进程中创建定时器。
在本发明实施例中,在获得所述分叉子进程后,针对所获得的分叉子进程添加一个定时器,所述定时器可以是反复性定时器,也可以是一次性定时器,具体的定时器类型可以根据用户的需要自行选择,在此不作限定。
S205,设置所述定时器的时间间隔。
在本发明实施例中,通过设置定时器时间间隔,决定分叉子进程所运行的两个间隔时间,如设置10秒,则10秒内分叉子进程只可运行一次。
S206,根据所述时间间隔控制所述应用进程显示运行信息的操作。
在本发明实施例中,分叉子进程的运行用于显示与其对应的应用进程的运行信息,根据所述时间间隔控制所述应用进程显示运行信息的操作,例如,可以将定时器的设置改为手动设置,分叉子进程运行一次之后必须响应某些操作才可再次运行。通过设置定时器以控制应用进程显示运行信息的操作,可以达到动态显示当前应用进程信息的效果。
S207,控制所述服务进程启动针对所述应用进程的保护程序。
在本发明实施例中,启动针对所述应用进程的保护程序,可选的,若当前应用程序(Application Programming Interface,API)编程接口数量小于18,在前台Service中直接传入Notification()函数,设置定时唤醒应用程序的时间间隔,并通过发送唤醒广播来促使已挂掉的应用进程重新启动,其中,该时间间隔可以是5分钟、10分钟,或者其他时间,具体的时间间隔在此不作限定;若API编程接口数量大于或者等于18,同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理,并通过使用Hack手段对正在被杀掉的应用进程作保活,即通过提高被保护的应用进程的优先级,在应用进程将要面临被杀掉时,利用被保护的应用进程的优先级高于其他进程而不被杀掉以达到保活的目的。
S208,若检测到用于停止所述应用进程的停止事件时,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行。
在本发明实施例中,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行,可选的,若应用进程中断时,应用进程和服务进程之间的连接便会中断,服务进程会接收到应用进程中断通知消息,服务进程一旦接收到中断通知消息,即确定应用程序可能已被中断,将重新启动应用程序的应用进程中的部分或者全部功能;可选的,若应用进程将被中断时,通过使用Hack手段对正在被杀掉的应用进程作保活,通过提高被保护的应用进程的优先级,在应用进程将要面临被杀掉时,利用被保护的应用进程的优先级高于其他进程而不被杀掉以达到保活的目的。
由以上可见,本发明实施例通过创建定时器,设置所述定时器的时间间隔,根据所述时间间隔控制所述应用进程显示运行信息的操作,可以达到动态显示当前应用程序信息的效果,改善用户的使用体验。
请参阅图3,图3是本发明实施例提供的一种进程保护方法的示意流程图。该方法可以运行在智能手机(如Android手机、IOS手机等)、平板电脑、笔记本电脑以及智能设备等终端中。本发明实施例所述的进程保护方法可以提高保护用户所希望运行的应用程序的效率,改善用户的使用体验。图3是本发明实施例提供的一种进程保护方法的示意流程图。该方法包括步骤S301~S308。
S301,若检测到一应用进程正在运行,生成与所述应用进程相对应的服务进程。
在本发明实施例中,在终端开启时,用户可以选择相对应的应用程序的开启,在开启应用程序时,与应用程序对应的应用进程便开始运行。其中,应用程序是指用户可以看得见并感觉得到的程序,例如微信、word、photoshop等,应用进程指的是一般用户可能感觉不到它的存在,并作为应用程序的执行实体而存在,例如一些服务、windows内核等计算机程序,他们在后台中默默的运行着。具体的,一个“应用程序”一定可以找到一个“应用进程”与其对应,但一个“应用进程”不一定会有一个“应用程序”与其对应,有些应用进程可能是后台的运行进程,用户无法看到,也无法感觉到。
需要说明的是,若应用进程保持运行,则与该应用进程相对应的应用程序可以被使用,若应用进程被杀掉,即被停止运行,则与该应用进程相对应的应用程序将被关闭。若检测到某一应用进程正在运行,生成与所述应用进程相对应的服务进程,可选的,可以利用终端系统的漏洞来生成一个服务进程,所生成的服务进程不会在终端系统的通知栏处出现,服务进程的运行就如同运行着一个后台service进程一样,生成的方法如下:(1)若当前应用程序(Application Programming Interface,API)编程接口数量小于18,在前台Service中直接传入Notification()函数;(2)若API编程接口数量大于或者等于18,同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理。
S302,建立所述服务进程与所述应用进程之间的连接关系。
在本发明实施例中,当为应用程序创建服务进程之后,终端需要建立服务进程和应用进程之间的连接,通过监控该连接的状态,确定是否需要对与服务进程相对应的应用程序进行保护。其中,终端为服务进程创建了套接口,监测服务进程和应用进程之间的连接即为监测服务进程的套接口和应用进程的套接口之间的连接。通过建立服务进程和应用进程之间的连接关系,终端可以建立应用程序的服务进程和应用进程之间的连接,并且通过该连接来实现数据传输,并通过监听该连接是否中断来判断应用程序的状态,对应用程序的状态确定过程方便快捷,系统时延小,系统资源消耗小。
S303,获取与所述服务进程相对应的分叉子进程。
在本发明实施例中,将所述服务进程fork出来的子进程作为所述分叉子进程,将分叉子进程的上一级进程称为父进程,在分叉子进程与父进程之间具体某种特性,即当父进程被杀掉后,与其相关的分叉子进程仍然可以存活,并且不受父进程的影响。
S304,在所述分叉子进程中设置无障碍服务类。
在本发明实施例中,通过在分叉子进程设置无障碍服务类,并回调无障碍服务类中的方法,可以达到动态显示当前运行的应用进程信息的效果。可选的,所设置的无障碍类可以是AccessibilityService类。
S305,调用所述无障碍服务类中预设的方法项。
在本发明实施例中,在的无障碍服务类中的预设的方法项可以是onAccessibilityEvent(AccessibilityEvent event)方法。
进一步地,如图4所示,步骤S305包括步骤S401~S402。
S401,若检测到符合无障碍服务设定的无障碍事件过滤参数事件时,调用所述预设方法项。
在本发明实施例中,当系统检测到一个符合无障碍服务设定的无障碍事件过滤参数的事件时,预设的方法项被系统回调。
S402,传递关联的无障碍事件并向用户反馈。
在本发明实施例中,例如,当用户在应用程序中点击一个按钮或聚焦一个用户界面控件时,无障碍服务会为此应用程序提供反馈,此时,系统调用所预设的方法项,传递相关联的无障碍事件,无障碍服务就可以翻译和使用该事件为用户提供反馈。需要说明的是,在无障碍服务的生命周期中,所预设的方法项会被调用多次。
S306,根据所述预设的方法项获取所述应用进程的运行信息。
在本发明实施例中,通过回调无障碍服务类中的方法,可以动态显示当前运行的应用进程信息。
S307,控制所述服务进程启动针对所述应用进程的保护程序。
在本发明实施例中,启动针对所述应用进程的保护程序,可选的,若当前应用程序(Application Programming Interface,API)编程接口数量小于18,在前台Service中直接传入Notification()函数,设置定时唤醒应用程序的时间间隔,并通过发送唤醒广播来促使已挂掉的应用进程重新启动,其中,该时间间隔可以是5分钟、10分钟,或者其他时间,具体的时间间隔在此不作限定;若API编程接口数量大于或者等于18,同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理,并通过使用Hack手段对正在被杀掉的应用进程作保活,即通过提高被保护的应用进程的优先级,在应用进程将要面临被杀掉时,利用被保护的应用进程的优先级高于其他进程而不被杀掉以达到保活的目的。
S308,若检测到用于停止所述应用进程的停止事件时,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行。
在本发明实施例中,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行,可选的,若应用进程中断时,应用进程和服务进程之间的连接便会中断,服务进程会接收到应用进程中断通知消息,服务进程一旦接收到中断通知消息,即确定应用程序可能已被中断,将重新启动应用程序的应用进程中的部分或者全部功能;可选的,若应用进程将被中断时,通过使用Hack手段对正在被杀掉的应用进程作保活,通过提高被保护的应用进程的优先级,在应用进程将要面临被杀掉时,利用被保护的应用进程的优先级高于其他进程而不被杀掉以达到保活的目的。
由以上可见,本发明实施例通过设置无障碍服务类,并调用所述无障碍服务类中预设的方法项,可以达到动态显示当前应用程序信息的效果,改善用户的使用体验。
请参阅图5,图5是本发明实施例提供的一种进程保护方法的示意流程图。该方法可以运行在智能手机(如Android手机、IOS手机等)、平板电脑、笔记本电脑以及智能设备等终端中。本发明实施例所述的进程保护方法可以提高保护用户所希望运行的应用程序的效率,改善用户的使用体验,并且可以帮助开发人员准确查找、定位出现ANR问题的原因。图5是本发明实施例提供的一种进程保护方法的示意流程图。该方法包括步骤S501~S509。
S501,若检测到一应用进程正在运行,生成与所述应用进程相对应的服务进程。
在本发明实施例中,在终端开启时,用户可以选择相对应的应用程序的开启,在开启应用程序时,与应用程序对应的应用进程便开始运行。其中,应用程序是指用户可以看得见并感觉得到的程序,例如微信、word、photoshop等,应用进程指的是一般用户可能感觉不到它的存在,并作为应用程序的执行实体而存在,例如一些服务、windows内核等计算机程序,他们在后台中默默的运行着。具体的,一个“应用程序”一定可以找到一个“应用进程”与其对应,但一个“应用进程”不一定会有一个“应用程序”与其对应,有些应用进程可能是后台的运行进程,用户无法看到,也无法感觉到。
需要说明的是,若应用进程保持运行,则与该应用进程相对应的应用程序可以被使用,若应用进程被杀掉,即被停止运行,则与该应用进程相对应的应用程序将被关闭。若检测到某一应用进程正在运行,生成与所述应用进程相对应的服务进程,可选的,可以利用终端系统的漏洞来生成一个服务进程,所生成的服务进程不会在终端系统的通知栏处出现,服务进程的运行就如同运行着一个后台service进程一样,生成的方法如下:(1)若当前应用程序(Application Programming Interface,API)编程接口数量小于18,在前台Service中直接传入Notification()函数;(2)若API编程接口数量大于或者等于18,同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理。
S502,创建监测线程。
在本发明实施例中,一般实时监控功能放在一个单独开辟的线程比较合适,因为这样可以大大减轻主线程的负担。创建监测线程,可选的,通过在终端的平台上新建一个对话框工程,如Test,并在BOOL C Test Dlg::OnInitDialog()函数里创建所述监测线程。
S503,根据所述监测线程向所述应用进程指示或者派发任务。
在本发明实施例中,在所述监测线程内的Looper(有消息循环的线程)使用Handler(异步消息的处理)不断发消息往应用进程中的UI线程,并派发一个任务由系统去处理。
S504,记录所述任务指示或者派发的时间戳。
在本发明实施例中,用户可以记录下所派发任务的时间戳,而这个任务会修改派发任务时记录下的时间戳。派发完任务后,线程睡眠固定时间(一般为5s),并等待线程重新开启。
S505,监测所述时间戳是否发生变化。
在本发明实施例中,待线程重新开启后,通过判断记录的时间是否有改变来检测之前派发的任务是否执行了,如果任务未被执行,证明线程阻塞了,成功监测到应用程序无响应(Application Not Responding,ANR)。
S506,若检测到所述时间戳未发生变化,判定所述应用进程处于ANR状态。
S507,建立所述服务进程与所述应用进程之间的连接关系。
在本发明实施例中,当为应用程序创建服务进程之后,终端需要建立服务进程和应用进程之间的连接,通过监控该连接的状态,确定是否需要对与服务进程相对应的应用程序进行保护。其中,终端为服务进程创建了套接口,监测服务进程和应用进程之间的连接即为监测服务进程的套接口和应用进程的套接口之间的连接。通过建立服务进程和应用进程之间的连接关系,终端可以建立应用程序的服务进程和应用进程之间的连接,并且通过该连接来实现数据传输,并通过监听该连接是否中断来判断应用程序的状态,对应用程序的状态确定过程方便快捷,系统时延小,系统资源消耗小。
S508,控制所述服务进程启动针对所述应用进程的保护程序。
在本发明实施例中,启动针对所述应用进程的保护程序,可选的,若当前应用程序(Application Programming Interface,API)编程接口数量小于18,在前台Service中直接传入Notification()函数,设置定时唤醒应用程序的时间间隔,并通过发送唤醒广播来促使已挂掉的应用进程重新启动,其中,该时间间隔可以是5分钟、10分钟,或者其他时间,具体的时间间隔在此不作限定;若API编程接口数量大于或者等于18,同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理,并通过使用Hack手段对正在被杀掉的应用进程作保活,即通过提高被保护的应用进程的优先级,在应用进程将要面临被杀掉时,利用被保护的应用进程的优先级高于其他进程而不被杀掉以达到保活的目的。
S509,若检测到用于停止所述应用进程的停止事件时,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行。
在本发明实施例中,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行,可选的,若应用进程中断时,应用进程和服务进程之间的连接便会中断,服务进程会接收到应用进程中断通知消息,服务进程一旦接收到中断通知消息,即确定应用程序可能已被中断,将重新启动应用程序的应用进程中的部分或者全部功能;可选的,若应用进程将被中断时,通过使用Hack手段对正在被杀掉的应用进程作保活,通过提高被保护的应用进程的优先级,在应用进程将要面临被杀掉时,利用被保护的应用进程的优先级高于其他进程而不被杀掉以达到保活的目的。
由以上可见,本发明实施例通过创建监测线程,根据所述监测线程向所述应用进程指示或者派发任务,记录所述任务指示或者派发的时间戳,监测所述时间戳是否发生变化,若检测到所述时间戳未发生变化,判定所述应用进程处于ANR状态,从而可以帮助开发人员准确查找、定位出现ANR问题的原因。
请参阅图6,对应上述一种进程保护方法,本发明实施例还提出一种进程保护装置,该装置100包括:生成单元101、建立单元102、第一控制单元103、第二控制单元104。
其中,所述生成单元101,用于若检测到一应用进程正在运行,生成与所述应用进程相对应的服务进程。在本发明实施例中,在终端开启时,用户可以选择相对应的应用程序的开启,在开启应用程序时,与应用程序对应的应用进程便开始运行。其中,应用程序是指用户可以看得见并感觉得到的程序,例如微信、word、photoshop等,应用进程指的是一般用户可能感觉不到它的存在,并作为应用程序的执行实体而存在,例如一些服务、windows内核等计算机程序,他们在后台中默默的运行着。具体的,一个“应用程序”一定可以找到一个“应用进程”与其对应,但一个“应用进程”不一定会有一个“应用程序”与其对应,有些应用进程可能是后台的运行进程,用户无法看到,也无法感觉到。
需要说明的是,若应用进程保持运行,则与该应用进程相对应的应用程序可以被使用,若应用进程被杀掉,即被停止运行,则与该应用进程相对应的应用程序将被关闭。若检测到某一应用进程正在运行,生成与所述应用进程相对应的服务进程,可选的,可以利用终端系统的漏洞来生成一个服务进程,所生成的服务进程不会在终端系统的通知栏处出现,服务进程的运行就如同运行着一个后台service进程一样,生成的方法如下:(1)若当前应用程序(Application Programming Interface,API)编程接口数量小于18,在前台Service中直接传入Notification()函数;(2)若API编程接口数量大于或者等于18,同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理。
建立单元102,用于建立所述服务进程与所述应用进程之间的连接关系。在本发明实施例中,当为应用程序创建服务进程之后,终端需要建立服务进程和应用进程之间的连接,通过监控该连接的状态,确定是否需要对与服务进程相对应的应用程序进行保护。其中,终端为服务进程创建了套接口,监测服务进程和应用进程之间的连接即为监测服务进程的套接口和应用进程的套接口之间的连接。通过建立服务进程和应用进程之间的连接关系,终端可以建立应用程序的服务进程和应用进程之间的连接,并且通过该连接来实现数据传输,并通过监听该连接是否中断来判断应用程序的状态,对应用程序的状态确定过程方便快捷,系统时延小,系统资源消耗小。
第一控制单元103,用于控制所述服务进程启动针对所述应用进程的保护程序。在本发明实施例中,启动针对所述应用进程的保护程序,可选的,若当前应用程序(Application Programming Interface,API)编程接口数量小于18,在前台Service中直接传入Notification()函数,设置定时唤醒应用程序的时间间隔,并通过发送唤醒广播来促使已挂掉的应用进程重新启动,其中,该时间间隔可以是5分钟、10分钟,或者其他时间,具体的时间间隔在此不作限定;若API编程接口数量大于或者等于18,同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理,并通过使用Hack手段对正在被杀掉的应用进程作保活,即通过提高被保护的应用进程的优先级,在应用进程将要面临被杀掉时,利用被保护的应用进程的优先级高于其他进程而不被杀掉以达到保活的目的。
第二控制单元104,用于若检测到用于停止所述应用进程的停止事件时,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行。在本发明实施例中,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行,可选的,若应用进程中断时,应用进程和服务进程之间的连接便会中断,服务进程会接收到应用进程中断通知消息,服务进程一旦接收到中断通知消息,即确定应用程序可能已被中断,将重新启动应用程序的应用进程中的部分或者全部功能;可选的,若应用进程将被中断时,通过使用Hack手段对正在被杀掉的应用进程作保活,通过提高被保护的应用进程的优先级,在应用进程将要面临被杀掉时,利用被保护的应用进程的优先级高于其他进程而不被杀掉以达到保活的目的。
请参阅图7,对应上述一种进程保护方法,本发明实施例还提出一种进程保护装置,该终端200包括:生成单元201、建立单元202、第一获取单元203、创建单元204、第一设置单元205、第三控制单元206、第一控制单元207、第二控制单元208。
其中,所述生成单元201,用于若检测到一应用进程正在运行,生成与所述应用进程相对应的服务进程。在本发明实施例中,在终端开启时,用户可以选择相对应的应用程序的开启,在开启应用程序时,与应用程序对应的应用进程便开始运行。其中,应用程序是指用户可以看得见并感觉得到的程序,例如微信、word、photoshop等,应用进程指的是一般用户可能感觉不到它的存在,并作为应用程序的执行实体而存在,例如一些服务、windows内核等计算机程序,他们在后台中默默的运行着。具体的,一个“应用程序”一定可以找到一个“应用进程”与其对应,但一个“应用进程”不一定会有一个“应用程序”与其对应,有些应用进程可能是后台的运行进程,用户无法看到,也无法感觉到。
需要说明的是,若应用进程保持运行,则与该应用进程相对应的应用程序可以被使用,若应用进程被杀掉,即被停止运行,则与该应用进程相对应的应用程序将被关闭。若检测到某一应用进程正在运行,生成与所述应用进程相对应的服务进程,可选的,可以利用终端系统的漏洞来生成一个服务进程,所生成的服务进程不会在终端系统的通知栏处出现,服务进程的运行就如同运行着一个后台service进程一样,生成的方法如下:(1)若当前应用程序(Application Programming Interface,API)编程接口数量小于18,在前台Service中直接传入Notification()函数;(2)若API编程接口数量大于或者等于18,同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理。
建立单元202,用于建立所述服务进程与所述应用进程之间的连接关系。在本发明实施例中,当为应用程序创建服务进程之后,终端需要建立服务进程和应用进程之间的连接,通过监控该连接的状态,确定是否需要对与服务进程相对应的应用程序进行保护。其中,终端为服务进程创建了套接口,监测服务进程和应用进程之间的连接即为监测服务进程的套接口和应用进程的套接口之间的连接。通过建立服务进程和应用进程之间的连接关系,终端可以建立应用程序的服务进程和应用进程之间的连接,并且通过该连接来实现数据传输,并通过监听该连接是否中断来判断应用程序的状态,对应用程序的状态确定过程方便快捷,系统时延小,系统资源消耗小。
第一获取单元203,用于获取与所述服务进程相对应的分叉子进程。在本发明实施例中,将所述服务进程fork出来的子进程作为所述分叉子进程,将分叉子进程的上一级进程称为父进程,在分叉子进程与父进程之间具体某种特性,即当父进程被杀掉后,与其相关的分叉子进程仍然可以存活,并且不受父进程的影响。
创建单元204,用于在所述分叉子进程中创建定时器。在本发明实施例中,在获得所述分叉子进程后,针对所获得的分叉子进程添加一个定时器,所述定时器可以是反复性定时器,也可以是一次性定时器,具体的定时器类型可以根据用户的需要自行选择,在此不作限定。
第一设置单元205,用于设置所述定时器的时间间隔。在本发明实施例中,通过设置定时器时间间隔,决定分叉子进程所运行的两个间隔时间,如设置10秒,则10秒内分叉子进程只可运行一次。
第三控制单元206,用于根据所述时间间隔控制所述应用进程显示运行信息的操作。在本发明实施例中,分叉子进程的运行用于显示与其对应的应用进程的运行信息,根据所述时间间隔控制所述应用进程显示运行信息的操作,例如,可以将定时器的设置改为手动设置,分叉子进程运行一次之后必须响应某些操作才可再次运行。通过设置定时器以控制应用进程显示运行信息的操作,可以达到动态显示当前应用进程信息的效果。
第一控制单元207,用于控制所述服务进程启动针对所述应用进程的保护程序。在本发明实施例中,启动针对所述应用进程的保护程序,可选的,若当前应用程序(Application Programming Interface,API)编程接口数量小于18,在前台Service中直接传入Notification()函数,设置定时唤醒应用程序的时间间隔,并通过发送唤醒广播来促使已挂掉的应用进程重新启动,其中,该时间间隔可以是5分钟、10分钟,或者其他时间,具体的时间间隔在此不作限定;若API编程接口数量大于或者等于18,同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理,并通过使用Hack手段对正在被杀掉的应用进程作保活,即通过提高被保护的应用进程的优先级,在应用进程将要面临被杀掉时,利用被保护的应用进程的优先级高于其他进程而不被杀掉以达到保活的目的。
第二控制单元208,用于若检测到用于停止所述应用进程的停止事件时,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行。在本发明实施例中,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行,可选的,若应用进程中断时,应用进程和服务进程之间的连接便会中断,服务进程会接收到应用进程中断通知消息,服务进程一旦接收到中断通知消息,即确定应用程序可能已被中断,将重新启动应用程序的应用进程中的部分或者全部功能;可选的,若应用进程将被中断时,通过使用Hack手段对正在被杀掉的应用进程作保活,通过提高被保护的应用进程的优先级,在应用进程将要面临被杀掉时,利用被保护的应用进程的优先级高于其他进程而不被杀掉以达到保活的目的。
请参阅图8,对应上述一种进程保护方法,本发明实施例还提出一种进程保护装置,该装置300包括:生成单元301、建立单元302、第二获取单元303、第二设置单元304、调用单元305、第三获取单元306、第一控制单元307、第二控制单元308。
其中,所述生成单元301,用于若检测到一应用进程正在运行,生成与所述应用进程相对应的服务进程。在本发明实施例中,在终端开启时,用户可以选择相对应的应用程序的开启,在开启应用程序时,与应用程序对应的应用进程便开始运行。其中,应用程序是指用户可以看得见并感觉得到的程序,例如微信、word、photoshop等,应用进程指的是一般用户可能感觉不到它的存在,并作为应用程序的执行实体而存在,例如一些服务、windows内核等计算机程序,他们在后台中默默的运行着。具体的,一个“应用程序”一定可以找到一个“应用进程”与其对应,但一个“应用进程”不一定会有一个“应用程序”与其对应,有些应用进程可能是后台的运行进程,用户无法看到,也无法感觉到。
需要说明的是,若应用进程保持运行,则与该应用进程相对应的应用程序可以被使用,若应用进程被杀掉,即被停止运行,则与该应用进程相对应的应用程序将被关闭。若检测到某一应用进程正在运行,生成与所述应用进程相对应的服务进程,可选的,可以利用终端系统的漏洞来生成一个服务进程,所生成的服务进程不会在终端系统的通知栏处出现,服务进程的运行就如同运行着一个后台service进程一样,生成的方法如下:(1)若当前应用程序(Application Programming Interface,API)编程接口数量小于18,在前台Service中直接传入Notification()函数;(2)若API编程接口数量大于或者等于18,同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理。
建立单元302,用于建立所述服务进程与所述应用进程之间的连接关系。在本发明实施例中,当为应用程序创建服务进程之后,终端需要建立服务进程和应用进程之间的连接,通过监控该连接的状态,确定是否需要对与服务进程相对应的应用程序进行保护。其中,终端为服务进程创建了套接口,监测服务进程和应用进程之间的连接即为监测服务进程的套接口和应用进程的套接口之间的连接。通过建立服务进程和应用进程之间的连接关系,终端可以建立应用程序的服务进程和应用进程之间的连接,并且通过该连接来实现数据传输,并通过监听该连接是否中断来判断应用程序的状态,对应用程序的状态确定过程方便快捷,系统时延小,系统资源消耗小。
第二获取单元303,用于获取与所述服务进程相对应的分叉子进程。在本发明实施例中,将所述服务进程fork出来的子进程作为所述分叉子进程,将分叉子进程的上一级进程称为父进程,在分叉子进程与父进程之间具体某种特性,即当父进程被杀掉后,与其相关的分叉子进程仍然可以存活,并且不受父进程的影响。
第二设置单元304,用于在所述分叉子进程中设置无障碍服务类。在本发明实施例中,通过在分叉子进程设置无障碍服务类,并回调无障碍服务类中的方法,可以达到动态显示当前运行的应用进程信息的效果。可选的,所设置的无障碍类可以是AccessibilityService类。
调用单元305,用于调用所述无障碍服务类中预设的方法项。在本发明实施例中,在的无障碍服务类中的预设的方法项可以是onAccessibilityEvent(AccessibilityEventevent)方法。
第三获取单元306,用于根据所述预设的方法项获取所述应用进程的运行信息。在本发明实施例中,通过回调无障碍服务类中的方法,可以动态显示当前运行的应用进程信息。
第一控制单元307,用于控制所述服务进程启动针对所述应用进程的保护程序。在本发明实施例中,启动针对所述应用进程的保护程序,可选的,若当前应用程序(Application Programming Interface,API)编程接口数量小于18,在前台Service中直接传入Notification()函数,设置定时唤醒应用程序的时间间隔,并通过发送唤醒广播来促使已挂掉的应用进程重新启动,其中,该时间间隔可以是5分钟、10分钟,或者其他时间,具体的时间间隔在此不作限定;若API编程接口数量大于或者等于18,同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理,并通过使用Hack手段对正在被杀掉的应用进程作保活,即通过提高被保护的应用进程的优先级,在应用进程将要面临被杀掉时,利用被保护的应用进程的优先级高于其他进程而不被杀掉以达到保活的目的。
第二控制单元308,用于若检测到用于停止所述应用进程的停止事件时,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行。在本发明实施例中,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行,可选的,若应用进程中断时,应用进程和服务进程之间的连接便会中断,服务进程会接收到应用进程中断通知消息,服务进程一旦接收到中断通知消息,即确定应用程序可能已被中断,将重新启动应用程序的应用进程中的部分或者全部功能;可选的,若应用进程将被中断时,通过使用Hack手段对正在被杀掉的应用进程作保活,通过提高被保护的应用进程的优先级,在应用进程将要面临被杀掉时,利用被保护的应用进程的优先级高于其他进程而不被杀掉以达到保活的目的。
如图9所示,所述调用单元305,包括:
调用子单元3051,用于若检测到符合无障碍服务设定的无障碍事件过滤参数事件时,调用所述预设方法项。在本发明实施例中,当系统检测到一个符合无障碍服务设定的无障碍事件过滤参数的事件时,预设的方法项被系统回调。
反馈单元3052,用于传递关联的无障碍事件并向用户反馈。在本发明实施例中,例如,当用户在应用程序中点击一个按钮或聚焦一个用户界面控件时,无障碍服务会为此应用程序提供反馈,此时,系统调用所预设的方法项,传递相关联的无障碍事件,无障碍服务就可以翻译和使用该事件为用户提供反馈。需要说明的是,在无障碍服务的生命周期中,所预设的方法项会被调用多次。
请参阅图10,对应上述一种进程保护方法,本发明实施例还提出一种进程保护装置,该装置400包括:生成单元401、创建单元402、执行单元403、记录单元404、监测单元405、判定单元406、建立单元407、第一控制单元408、第二控制单元409。
其中,所述生成单元401,用于若检测到一应用进程正在运行,生成与所述应用进程相对应的服务进程。在本发明实施例中,在终端开启时,用户可以选择相对应的应用程序的开启,在开启应用程序时,与应用程序对应的应用进程便开始运行。其中,应用程序是指用户可以看得见并感觉得到的程序,例如微信、word、photoshop等,应用进程指的是一般用户可能感觉不到它的存在,并作为应用程序的执行实体而存在,例如一些服务、windows内核等计算机程序,他们在后台中默默的运行着。具体的,一个“应用程序”一定可以找到一个“应用进程”与其对应,但一个“应用进程”不一定会有一个“应用程序”与其对应,有些应用进程可能是后台的运行进程,用户无法看到,也无法感觉到。
需要说明的是,若应用进程保持运行,则与该应用进程相对应的应用程序可以被使用,若应用进程被杀掉,即被停止运行,则与该应用进程相对应的应用程序将被关闭。若检测到某一应用进程正在运行,生成与所述应用进程相对应的服务进程,可选的,可以利用终端系统的漏洞来生成一个服务进程,所生成的服务进程不会在终端系统的通知栏处出现,服务进程的运行就如同运行着一个后台service进程一样,生成的方法如下:(1)若当前应用程序(Application Programming Interface,API)编程接口数量小于18,在前台Service中直接传入Notification()函数;(2)若API编程接口数量大于或者等于18,同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理。
创建单元402,用于创建监测线程。在本发明实施例中,一般实时监控功能放在一个单独开辟的线程比较合适,因为这样可以大大减轻主线程的负担。创建监测线程,可选的,通过在终端的平台上新建一个对话框工程,如Test,并在BOOL C Test Dlg::OnInitDialog()函数里创建所述监测线程。
执行单元403,用于根据所述监测线程向所述应用进程指示或者派发任务。在本发明实施例中,在所述监测线程内的Looper(有消息循环的线程)使用Handler(异步消息的处理)不断发消息往应用进程中的UI线程,并派发一个任务由系统去处理。
记录单元404,用于记录所述任务指示或者派发的时间戳。在本发明实施例中,用户可以记录下所派发任务的时间戳,而这个任务会修改派发任务时记录下的时间戳。派发完任务后,线程睡眠固定时间(一般为5s),并等待线程重新开启。
监测单元405,用于监测所述时间戳是否发生变化。在本发明实施例中,待线程重新开启后,通过判断记录的时间是否有改变来检测之前派发的任务是否执行了,如果任务未被执行,证明线程阻塞了,成功监测到应用程序无响应(Application Not Responding,ANR)。
判定单元406,用于若检测到所述时间戳未发生变化,判定所述应用进程处于ANR状态。
建立单元407,用于建立所述服务进程与所述应用进程之间的连接关系。在本发明实施例中,当为应用程序创建服务进程之后,终端需要建立服务进程和应用进程之间的连接,通过监控该连接的状态,确定是否需要对与服务进程相对应的应用程序进行保护。其中,终端为服务进程创建了套接口,监测服务进程和应用进程之间的连接即为监测服务进程的套接口和应用进程的套接口之间的连接。通过建立服务进程和应用进程之间的连接关系,终端可以建立应用程序的服务进程和应用进程之间的连接,并且通过该连接来实现数据传输,并通过监听该连接是否中断来判断应用程序的状态,对应用程序的状态确定过程方便快捷,系统时延小,系统资源消耗小。
第一控制单元408,用于控制所述服务进程启动针对所述应用进程的保护程序。在本发明实施例中,启动针对所述应用进程的保护程序,可选的,若当前应用程序(Application Programming Interface,API)编程接口数量小于18,在前台Service中直接传入Notification()函数,设置定时唤醒应用程序的时间间隔,并通过发送唤醒广播来促使已挂掉的应用进程重新启动,其中,该时间间隔可以是5分钟、10分钟,或者其他时间,具体的时间间隔在此不作限定;若API编程接口数量大于或者等于18,同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理,并通过使用Hack手段对正在被杀掉的应用进程作保活,即通过提高被保护的应用进程的优先级,在应用进程将要面临被杀掉时,利用被保护的应用进程的优先级高于其他进程而不被杀掉以达到保活的目的。
第二控制单元409,用于若检测到用于停止所述应用进程的停止事件时,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行。在本发明实施例中,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行,可选的,若应用进程中断时,应用进程和服务进程之间的连接便会中断,服务进程会接收到应用进程中断通知消息,服务进程一旦接收到中断通知消息,即确定应用程序可能已被中断,将重新启动应用程序的应用进程中的部分或者全部功能;可选的,若应用进程将被中断时,通过使用Hack手段对正在被杀掉的应用进程作保活,通过提高被保护的应用进程的优先级,在应用进程将要面临被杀掉时,利用被保护的应用进程的优先级高于其他进程而不被杀掉以达到保活的目的。
由以上可见,本发明实施例通过创建监测线程,根据所述监测线程向所述应用进程指示或者派发任务,记录所述任务指示或者派发的时间戳,监测所述时间戳是否发生变化,若检测到所述时间戳未发生变化,判定所述应用进程处于ANR状态,从而可以帮助开发人员准确查找、定位出现ANR问题的原因。
在硬件实现上,以上生成单元101、建立单元102、第一控制单元103、第二控制单元104等可以以硬件形式内嵌于或独立于数据处理的装置中,也可以以软件形式存储于数据处理装置的存储器中,以便处理器调用执行以上各个单元对应的操作。该处理器可以为中央处理单元(CPU)、微处理器、单片机等。
上述进程保护装置可以实现为一种计算机程序的形式,计算机程序可以在如图11所示的计算机设备上运行。
图11为本发明一种进程保护设备的结构组成示意图。该设备可以是终端,也可以是服务器,其中,终端可以是智能手机、平板电脑、笔记本电脑、台式电脑、个人数字助理和穿戴式设备等具有通信功能的电子设备。服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。参照图11,该计算机设备500包括通过系统总线501连接的处理器502、非易失性存储介质503、内存储器504和网络接口505。其中,该计算机设备500的非易失性存储介质503可存储操作系统5031和计算机程序5032,该计算机程序5032被执行时,可使得处理器502执行一种进程保护方法。该计算机设备500的处理器502用于提供计算和控制能力,支撑整个计算机设备500的运行。该内存储器504中可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器502执行一种进程保护方法。计算机设备500的网络接口505用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502执行如下操作:
若检测到某一应用进程正在运行,生成与所述应用进程相对应的服务进程;
建立所述服务进程与所述应用进程之间的连接关系;
控制所述服务进程启动针对所述应用进程的保护程序;
若检测到用于停止所述应用进程的停止事件时,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行。
在一些实施例中,所述处理器502还执行如下操作:
获取与所述服务进程相对应的分叉子进程;
在所述分叉子进程中创建定时器;
设置所述定时器的时间间隔;
根据所述时间间隔控制所述应用进程显示运行信息的操作。
在一些实施例中,所述处理器502还执行如下操作:
获取与所述服务进程相对应的分叉子进程;
在所述分叉子进程中设置无障碍服务类;
调用所述无障碍服务类中预设的方法项;
根据所述预设的方法项获取所述应用进程的运行信息。
在一些实施例中,所述调用的无障碍服务类中预设的方法项,包括:
若检测到符合无障碍服务设定的无障碍事件过滤参数事件时,调用所述预设方法项;
传递关联的无障碍事件并向用户反馈。
在一些实施例中,所述处理器502还执行如下操作:
创建监测线程;
根据所述监测线程向所述应用进程指示或者派发任务;
记录所述任务指示或者派发的时间戳;
监测所述时间戳是否发生变化;
若检测到所述时间戳未发生变化,判定所述应用进程处于ANR状态。
本发明提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者一个以上程序,所述一个或者一个以上程序可被一个或者一个以上的处理器执行,以实现以下步骤:
若检测到某一应用进程正在运行,生成与所述应用进程相对应的服务进程;
建立所述服务进程与所述应用进程之间的连接关系;
控制所述服务进程启动针对所述应用进程的保护程序;
若检测到用于停止所述应用进程的停止事件时,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行。
计算机可读存储介质被所述处理器执行时,使得一个或多个处理器还执行以下步骤:
获取与所述服务进程相对应的分叉子进程;
在所述分叉子进程中创建定时器;
设置所述定时器的时间间隔;
根据所述时间间隔控制所述应用进程显示运行信息的操作。
计算机可读存储介质被所述处理器执行时,使得一个或多个处理器还执行以下步骤:
获取与所述服务进程相对应的分叉子进程;
在所述分叉子进程中设置无障碍服务类;
调用所述无障碍服务类中预设的方法项;
根据所述预设的方法项获取所述应用进程的运行信息。
计算机可读存储介质被所述处理器执行时,使得一个或多个处理器还执行以下步骤:所述调用的无障碍服务类中预设的方法项,包括:
若检测到符合无障碍服务设定的无障碍事件过滤参数事件时,调用所述预设方法项;
传递关联的无障碍事件并向用户反馈。
计算机可读存储介质被所述处理器执行时,使得一个或多个处理器还执行以下步骤:
创建监测线程;
根据所述监测线程向所述应用进程指示或者派发任务;
记录所述任务指示或者派发的时间戳;
监测所述时间戳是否发生变化;
若检测到所述时间戳未发生变化,判定所述应用进程处于ANR状态。
本发明前述的存储介质可以是非易失性存储介质,例如:磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等各种可以存储程序代码的介质。
本发明所有实施例中的单元可以通过通用集成电路,例如CPU(CentralProcessing Unit,中央处理器),或通过ASIC(Application Specific IntegratedCircuit,专用集成电路)来实现。
本发明实施例进程保护方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本发明实施例进程保护装置中的单元可以根据实际需要进行合并、划分和删减。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种进程保护方法,其特征在于,所述方法包括:
若检测到一应用进程正在运行,生成与所述应用进程相对应的服务进程;
建立所述服务进程与所述应用进程之间的连接关系;
控制所述服务进程启动针对所述应用进程的保护程序;
若检测到用于停止所述应用进程的停止事件时,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行。
2.如权利要求1所述的方法,其特征在于,在所述建立所述服务进程与所述应用进程之间的连接关系之后,所述方法还包括:
获取与所述服务进程相对应的分叉子进程;
在所述分叉子进程中创建定时器;
设置所述定时器的时间间隔;
根据所述时间间隔控制所述应用进程显示运行信息的操作。
3.如权利要求1所述的方法,其特征在于,在所述建立所述服务进程与所述应用进程之间的连接关系之后,所述方法还包括:
获取与所述服务进程相对应的分叉子进程;
在所述分叉子进程中设置无障碍服务类;
调用所述无障碍服务类中预设的方法项;
根据所述预设的方法项获取所述应用进程的运行信息。
4.如权利要求3所述的方法,其特征在于,所述调用的无障碍服务类中预设的方法项,包括:
若检测到符合无障碍服务设定的无障碍事件过滤参数事件时,调用所述预设方法项;
传递关联的无障碍事件并向用户反馈。
5.如权利要求1所述的方法,其特征在于,在所述若检测到某一应用进程正在运行,生成与所述应用进程相对应的服务进程之后,所述方法包括:
创建监测线程;
根据所述监测线程向所述应用进程指示或者派发任务;
记录所述任务指示或者派发的时间戳;
监测所述时间戳是否发生变化;
若检测到所述时间戳未发生变化,判定所述应用进程处于ANR状态。
6.一种进程保护装置,其特征在于,所述装置包括:
生成单元,用于若检测到一应用进程正在运行,生成与所述应用进程相对应的服务进程;
建立单元,用于建立所述服务进程与所述应用进程之间的连接关系;
第一控制单元,用于控制所述服务进程启动针对所述应用进程的保护程序;
第二控制单元,用于若检测到用于停止所述应用进程的停止事件时,控制所述服务进程利用所述保护程序保护所述应用进程并使所述应用进程继续运行。
7.如权利要求6所述的装置,其特征在于,所述装置还包括:
第一获取单元,用于获取与所述服务进程相对应的分叉子进程;
创建单元,用于在所述分叉子进程中创建定时器;
第一设置单元,用于设置所述定时器的时间间隔;
第三控制单元,用于根据所述时间间隔控制所述应用进程显示运行信息的操作。
8.如权利要求6所述的装置,其特征在于,所述装置还包括:
第二获取单元,用于获取与所述服务进程相对应的分叉子进程;
第二设置单元,用于在所述分叉子进程中设置无障碍服务类;
调用单元,用于调用所述无障碍服务类中预设的方法项;
第三获取单元,用于根据所述预设的方法项获取所述应用进程的运行信息;
所述调用单元,包括:
调用子单元,用于若检测到符合无障碍服务设定的无障碍事件过滤参数事件时,调用所述预设方法项;
反馈单元,用于传递关联的无障碍事件并向用户反馈;
所述装置还包括:
创建单元,用于创建监测线程;
执行单元,用于根据所述监测线程向所述应用进程指示或者派发任务;
记录单元,用于记录所述任务指示或者派发的时间戳;
监测单元,用于监测所述时间戳是否发生变化;
判定单元,用于若检测到所述时间戳未发生变化,判定所述应用进程处于ANR状态。
9.一种进程保护设备,其特征在于,包括:
存储器,用于存储实现进程保护的程序;以及
处理器,用于运行所述存储器中存储的进程保护的程序,以执行如权利要求1-5任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者一个以上程序,所述一个或者一个以上程序可被一个或者一个以上的处理器执行,以实现如权利要求1-5任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710827274.1A CN107678782B (zh) | 2017-09-14 | 2017-09-14 | 一种进程保护方法、装置、设备以及计算机可读存储介质 |
PCT/CN2017/108238 WO2019051944A1 (zh) | 2017-09-14 | 2017-10-30 | 一种进程保护方法、装置、设备以及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710827274.1A CN107678782B (zh) | 2017-09-14 | 2017-09-14 | 一种进程保护方法、装置、设备以及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107678782A true CN107678782A (zh) | 2018-02-09 |
CN107678782B CN107678782B (zh) | 2020-03-17 |
Family
ID=61136593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710827274.1A Active CN107678782B (zh) | 2017-09-14 | 2017-09-14 | 一种进程保护方法、装置、设备以及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107678782B (zh) |
WO (1) | WO2019051944A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108874522A (zh) * | 2018-06-19 | 2018-11-23 | 北京五八信息技术有限公司 | 消息推送设置方法、装置、计算机设备及可读存储介质 |
CN109582530A (zh) * | 2018-09-30 | 2019-04-05 | 中国平安人寿保险股份有限公司 | 系统控制方法、装置、计算机及计算机可读存储介质 |
CN110321203A (zh) * | 2018-03-29 | 2019-10-11 | 武汉斗鱼网络科技有限公司 | 后台进程假死处理方法及客户端 |
CN111930481A (zh) * | 2020-07-16 | 2020-11-13 | 重庆帮企科技集团有限公司 | 一种基于安卓系统的进程优先级提高方法和装置 |
CN112860408A (zh) * | 2021-03-03 | 2021-05-28 | 苏州沁游网络科技有限公司 | 一种云真机中的进程保活方法、装置、系统及存储介质 |
CN112966266A (zh) * | 2021-03-02 | 2021-06-15 | 北京金山云网络技术有限公司 | 一种病毒检测系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1349167A (zh) * | 2001-12-04 | 2002-05-15 | 上海复旦光华信息科技股份有限公司 | Solaris进程自动保护系统 |
CN104503912A (zh) * | 2014-12-24 | 2015-04-08 | 中科创达软件股份有限公司 | 一种服务响应过程的监测方法及装置 |
CN104809400A (zh) * | 2015-04-28 | 2015-07-29 | 联动优势科技有限公司 | 一种进程保护的方法及装置 |
CN105260241A (zh) * | 2015-10-23 | 2016-01-20 | 南京理工大学 | 集群系统中进程相互协作的方法 |
CN105303103A (zh) * | 2015-10-14 | 2016-02-03 | 北京奇虎科技有限公司 | 保护移动终端中的服务进程的方法和移动终端 |
CN105827438A (zh) * | 2016-03-11 | 2016-08-03 | 广东亿迅科技有限公司 | 一种自动设置apn的方法 |
CN106685752A (zh) * | 2016-06-28 | 2017-05-17 | 腾讯科技(深圳)有限公司 | 一种信息处理方法及终端 |
CN106951335A (zh) * | 2017-02-28 | 2017-07-14 | 维沃移动通信有限公司 | 一种进程守护方法和移动终端 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193825A (zh) * | 2011-04-26 | 2011-09-21 | 北京思创银联科技股份有限公司 | 进程保护方法 |
CN105589757A (zh) * | 2014-10-23 | 2016-05-18 | 上海天脉聚源文化传媒有限公司 | 一种服务器架构下的保护工作进程的方法和服务器 |
CN104598313A (zh) * | 2015-02-04 | 2015-05-06 | 广州市久邦数码科技有限公司 | 一种应用进程被停止后自动重启的实现方法及其系统 |
-
2017
- 2017-09-14 CN CN201710827274.1A patent/CN107678782B/zh active Active
- 2017-10-30 WO PCT/CN2017/108238 patent/WO2019051944A1/zh active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1349167A (zh) * | 2001-12-04 | 2002-05-15 | 上海复旦光华信息科技股份有限公司 | Solaris进程自动保护系统 |
CN104503912A (zh) * | 2014-12-24 | 2015-04-08 | 中科创达软件股份有限公司 | 一种服务响应过程的监测方法及装置 |
CN104809400A (zh) * | 2015-04-28 | 2015-07-29 | 联动优势科技有限公司 | 一种进程保护的方法及装置 |
CN105303103A (zh) * | 2015-10-14 | 2016-02-03 | 北京奇虎科技有限公司 | 保护移动终端中的服务进程的方法和移动终端 |
CN105260241A (zh) * | 2015-10-23 | 2016-01-20 | 南京理工大学 | 集群系统中进程相互协作的方法 |
CN105827438A (zh) * | 2016-03-11 | 2016-08-03 | 广东亿迅科技有限公司 | 一种自动设置apn的方法 |
CN106685752A (zh) * | 2016-06-28 | 2017-05-17 | 腾讯科技(深圳)有限公司 | 一种信息处理方法及终端 |
CN106951335A (zh) * | 2017-02-28 | 2017-07-14 | 维沃移动通信有限公司 | 一种进程守护方法和移动终端 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321203A (zh) * | 2018-03-29 | 2019-10-11 | 武汉斗鱼网络科技有限公司 | 后台进程假死处理方法及客户端 |
CN108874522A (zh) * | 2018-06-19 | 2018-11-23 | 北京五八信息技术有限公司 | 消息推送设置方法、装置、计算机设备及可读存储介质 |
CN109582530A (zh) * | 2018-09-30 | 2019-04-05 | 中国平安人寿保险股份有限公司 | 系统控制方法、装置、计算机及计算机可读存储介质 |
CN109582530B (zh) * | 2018-09-30 | 2024-05-14 | 中国平安人寿保险股份有限公司 | 系统控制方法、装置、计算机及计算机可读存储介质 |
CN111930481A (zh) * | 2020-07-16 | 2020-11-13 | 重庆帮企科技集团有限公司 | 一种基于安卓系统的进程优先级提高方法和装置 |
CN112966266A (zh) * | 2021-03-02 | 2021-06-15 | 北京金山云网络技术有限公司 | 一种病毒检测系统 |
CN112860408A (zh) * | 2021-03-03 | 2021-05-28 | 苏州沁游网络科技有限公司 | 一种云真机中的进程保活方法、装置、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107678782B (zh) | 2020-03-17 |
WO2019051944A1 (zh) | 2019-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107678782A (zh) | 一种进程保护方法、装置、设备以及计算机可读存储介质 | |
US9880157B2 (en) | Apparatus and methods for suppressing user-alerting actions | |
CN104639423B (zh) | 一种信息交互方法、装置及终端 | |
CN113055530B (zh) | 一种模式切换方法及装置 | |
CN106055077A (zh) | 一种基于唤醒锁的处理方法及装置 | |
CN103713886A (zh) | 一种数据处理设备中的提醒装置及其提醒处理方法 | |
CN107844189A (zh) | 一种降低黑屏耗电的方法、系统、终端及计算机可读存储介质 | |
CN106502687A (zh) | 一种进入休眠状态的方法及终端 | |
CN104346563B (zh) | 一种信息处理的方法及电子设备 | |
CN107577508A (zh) | 应用程序处理方法、装置、可读存储介质和移动终端 | |
CN108595236A (zh) | 一种防止子线程进行用户界面操作的方法及装置 | |
CN106055074A (zh) | 一种应用程序处理方法及装置 | |
CN107608724A (zh) | 一种管理应用程序的方法、终端及计算机可读存储介质 | |
CN107766103A (zh) | 一种终端控制方法及装置、终端和可读存储介质 | |
CN107070670A (zh) | 控制广播发送者发送广播消息的方法、装置和终端设备 | |
CN106775652A (zh) | 对终端的应用程序进行唤醒的方法及装置 | |
CN105824660A (zh) | 一种应用程序的更新方法及终端 | |
CN107592414A (zh) | 一种消息回复方法、消息发送方法及系统 | |
CN109639586A (zh) | 一种数据传输方法、装置及系统 | |
CN105357387B (zh) | 一种唤醒终端的方法、装置及系统 | |
CN104486149A (zh) | 一种用于地面测试的有限状态机方法 | |
CN103618643B (zh) | 一种消息队列动态报警监控方法及装置 | |
CN105100125A (zh) | 一种虚拟桌面的休眠控制方法、装置及系统 | |
CN104598008B (zh) | 安卓设备的功耗控制方法 | |
CN105451233B (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 |