具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。
在下述说明中,先针对本发明的智能心跳保活方法的实施例进行说明,再对本发明的智能心跳保活***的各实施例进行说明。
图1中示出了本发明的智能心跳保活方法实施例的流程示意图。如图1所示,本实施例中的方法包括步骤:
步骤S101:监测是否满足智能心跳自适应计算条件,并在监测到满足智能心跳自适应计算条件时,进入步骤S102;
步骤S102:采用当前心跳包时间间隔进行心跳测试,然后进入步骤S103、步骤S105;
步骤S103:判断是否满足测试成功条件,若满足测试成功条件,则进入步骤S104;
步骤S104:将当前心跳包时间间隔加上预定心跳增加步长作为新的当前心跳包时间间隔,然后返回步骤S102的采用当前心跳包时间间隔进行心跳测试的步骤;
步骤S105:判断是否满足测试失败条件,若满足测试失败条件,则进入步骤S106;
步骤S106:根据当前心跳包时间间隔确定稳定心跳包时间间隔。
根据本发明实施例的方法,其是通过对智能心跳自适应计算条件进行监测,并在满足智能心跳自适应计算条件时,通过进行心跳测试逐步对心跳包时间间隔进行调整,直至找到合适的稳定心跳包时间间隔,从而不仅可以得到与当前网络环境相适应的、能保持网络连接的尽可能大的心跳包时间间隔,由于心跳包时间间隔是尽可能大的,因而也可以在一定程度上节省电量、流量以及网络资源。
在本发明方案中,可以设定有一个心跳包时间间隔区间,该心跳包时间间隔区间的最小值(本发明方案中称之为预设最小心跳包时间间隔)。为了能够保证应用收取消息的及时性,在本发明方案的一个具体实施例中,在应用处于前台活跃状态时,可以将应用的心跳包时间间隔设置为该预设最小心跳包时间间隔。对于目前的各类应用来说,当应用处于前台时,即终端界面显示的是该应用的界面时,则该应用是处于活跃状态。监测应用是处于前台状态还是后台状态的方式,可以采用目前以及以后可能出现的任何方式进行,在此不予详加赘述。
在本发明方案的一个具体示例中,可以根据具体情境的不同设定不同的状态。图2中示出了该示例中各状态之间切换过程的示意图。
如图2所示,在该示例中一共包括有五个状态:前台活跃态、后台活跃态、自适应计算态、后台稳定态、以及断网IDLE态。
前台活跃态,是指应用在前台,而且屏幕亮屏。在前台活跃态,可以采用预设最小心跳包时间间隔发送心跳包。在本发明的一个具体示例中,该预设最小心跳包时间间隔可以设置为4.5分钟。
后台活跃态,是指应用切换到后台、或者终端的屏幕刚关屏的状态。后台活跃态是前台活跃态与自适应计算态之间的过渡状态,以尽量选择不活跃的时间段来进行自适应心跳计算,以减少自适应心跳计算可能产生的消息不能及时收取的影响。在不考虑自适应心跳计算所耗费的时间因素的话,也可以不设置该后台活跃态。在本发明的一个具体示例中,该后台活跃态可以采用与前台活跃态相同的预设最小心跳包时间间隔发送心跳包,且保持长连接预定时间段。该预定时间段可以根据实际需要进行设定,例如30分钟等等。在另一个具体示例中,该后台活跃太可以采用与前台活跃态相同的预设最小心跳包时间间隔发送心跳包,且在发送心跳包连续成功第一预定成功次数时,在连续成功第一预定成功次数后,才能判定网络仍然处于稳定状态,然后才进入后续的自适应计算态。
自适应计算态,是指通过进行心跳测试来进行自适应计算最终得到稳定心跳包时间间隔的过程,即上述本发明实施例中的步骤S102至步骤S106所包含的过程。
后台稳定态,是指在自适应计算态已经找到了最大的心跳包时间间隔,即上述稳定心跳包时间间隔,并用该稳定心跳包时间间隔来保持稳定心跳。
断网IDLE态,是指应用断网停止心跳。
上述五个状态之间,并不是相互孤立存在的,各状态之间在实际应用场景中可以进行相互的切换。如图2所示,前台活跃态与后台活跃态之间可以相互切换,自适应计算态与后台稳定态之间可以相互切换。在断网后,可以从前台活跃态、后台活跃态、自适应计算态、后台稳定态切换到断网IDLE态。在断网的情况下,若在应用处于前台、所在终端开屏的情况下联网,则可以从断网IDLE态切换到前台活跃态;若在应用处于后台或者终端关屏的情况下联网,则可以从断网IDLE态切换到后台活跃态。在自适应计算态以及后台稳定态时,若接收到新消息,则可以切换到后台活跃态。在下述针对各具体示例的说明中,再结合具体的状态进行详细说明
上述智能心跳自适应计算条件,可以针对不同情况做不同的设置。
在其中一种方式中,可以是在监测到应用处于后台状态或者终端处于前台关屏状态时,判定满足智能心跳自适应计算条件。从而可以是尽量选择应用不活跃的时间段,减少了心跳自适应计算过程中可能产生的消息接收不及时的影响。
在另外一种方式中,可以是在用稳定心跳包时间间隔发送心跳包、且发送心跳包连续失败第二预定失败次数时,判定满足智能心跳自适应计算条件。其中,这里的第二预定失败次数,基于实际需要可以做不同的设定。在本发明方案的一个具体示例中,可以将第二预定失败次数设定为5次。
此外,为了能够确保是在网络稳定的情况下进行智能心跳自适应计算,在监测到上述满足智能心跳自适应计算条件后,还可以是在确定网络处于稳定状态后,再进入上述采用当前心跳包时间间隔进行心跳测试的步骤。确定网络处于稳定状态的方式,基于实际应用需要可以有不同的方式。
在其中一种方式中,可以是在监测到满足自适应计算条件后,以采用预设最小心跳包时间间隔发送心跳包的方式维持预定时间段后,认为网络处于稳定状态,并进入上述采用当前心跳包进行心跳测试的步骤。上述预定时间段,可以根据实际需要自行设定。
在另外一种方式中,可以是在监测到满足智能心跳自适应计算条件后,采用预设最小心跳包时间间隔发送心跳包,且在发送心跳包连续成功第一预定成功次数时,认为网络处于稳定状态,并进入上述采用当前心跳包进行心跳测试的步骤。其中,这里的第一预定成功次数,可以根据实际需要自行设定。在本发明的一个具体实施例中,可以将该第一预定成功次数设定为3次。
在另外一种实现方式中,可以是在监测到满足自适应计算条件后,将当前心跳包时间间隔设定为预设最小心跳包时间间隔,然后进入所述采用当前心跳包时间间隔进行心跳测试的步骤。
针对上述测试成功条件,也可以做不同的设置。
在其中一种方式中,可以是在采用当前心跳包时间间隔进行心跳测试且测试成功时,判定满足测试成功条件。即,只要用当前心跳包时间间隔进行心跳测试成功一次,就可以判定满足测试成功条件。
在另外一种方式中,可以是在采用当前心跳包时间间隔进行预定测试次数的心跳测试,且成功率大于或者等于预定成功率门限值时,判定满足测试成功条件。这里的预定测试次数,可以根据实际需要进行设定,例如20次、30次等。这里的成功率,是心跳测试成功的次数与心跳测试总次数的比值,这里的预定成功率门限值,可以根据实际需要进行设定,例如70%、80%、90%等等。在要求很高的情况下,甚至于可以是将该预定成功率门限值设定为更高的值。
在另外一种方式中,可以是在采用当前心跳包时间间隔进行心跳测试、且连续成功第二预定成功次数时,判定满足测试成功条件。
相应地,针对上述测试失败条件,也可以做不同的设置。
在其中一种方式中,可以是在采用当前心跳包时间间隔进行心跳测试、心跳测试失败次数累积达到第一预定失败次数时,判定满足测试失败条件。
在另外一种方式中,可以是在采用当前心跳包时间间隔进行预定测试次数的心跳测试,且成功率小于预定成功率门限值时,判定满足测试失败条件。
以在采用当前心跳包时间间隔进行心跳测试且测试成功时判定满足测试成功条件、心跳测试失败次数累积达到第一预定失败次数时判定满足测试失败条件为例,图3中示出了一个具体示例中自适应确定稳定心跳包时间间隔的流程示意图。
如图3所示,在该示例中,SuccessHeart表示当前成功心跳时间间隔,初始为MinHeart;CurHeart表示当前心跳包时间间隔,初始值为SuccessHeart;HeartStep表示预定心跳增加步长,在其中一个具体示例中,可以选择为1分钟。
如图3所示,在该示例中,先以当前心跳包时间间隔CurHeart进行心跳测试,并根据心跳测试的不同做不同的处理。
若心跳测试成功,则说明满足测试成功条件,将该当前心跳包时间间隔CurHeart设置为当前成功心跳时间间隔SuccessHeart,并将当前心跳包时间间隔CurHeart加上预定心跳增加步长HeartStep得到的值作为新的当前心跳包时间间隔,返回重新进行心跳测试。
若心跳测试不成功,则将当前心跳包时间间隔CurHeart心跳失败次数加1,并判断当前心跳包时间间隔CurHeart心跳失败次数是否大于或者等于预定第一预定失败次数,如果是,则说明满足测试失败条件,结束自适应调整过程,将当前成功心跳时间间隔SuccessHeart或者当前心跳包时间间隔减去预定心跳增加步长HeartStep(即CurHeart-HeartStep)得到的值作为稳定心跳包时间间隔,进入后台稳定态,在后台稳定态,直接用该稳定心跳包时间间隔发送心跳包。为了避免直接将当前成功心跳时间间隔SuccessHeart设定为稳定心跳包时间间隔时可能会靠近心跳包时间间隔的临界值,进而影响到心跳包发送的成功率以及心跳保活的稳定性,如图3所示,还可以是将当前成功心跳时间间隔SuccessHeart减去预设稳定心跳步长AvertCriticalStep所得到的差值(即SuccessHeart-AvertCriticalStep)作为稳定心跳包时间间隔。若当前心跳包时间间隔CurHeart心跳失败次数小于预定第一预定失败次数,则说明还未满足测试失败条件,返回重新进行心跳测试。
图3中所示的自适应确定稳定心跳包时间间隔的说明中,是以一次心跳测试成功就认为满足测试成功条件为例进行说明。在具体应用中,也可以设置为心跳测试的次数累积或者连续达到一定次数时才认为满足测试成功条件。
在确定了稳定心跳包时间间隔后,则进入上述后台稳定态。在采用稳定心跳包时间间隔发送心跳包时,由于网络环境等的变化,可能会从后台稳定态返回到上述自适应计算态。据此,图4中示出了一个具体示例中用稳定心跳包时间间隔发送心跳包时的动态调整的流程示意图。在该示例中,以SuccessHeart表示稳定心跳包时间间隔,MinHeart表示预设最小心跳包时间间隔,CurHeart表示当前心跳包时间间隔。
如图4所示,在后台稳定态,用稳定心跳包时间间隔SuccessHeart发送心跳包,并对发送心跳包是否成功进行判断。若发送心跳包成功,将SuccessHeart心跳失败次数清零,返回继续采用稳定心跳包时间间隔SuccessHeart发送心跳包。若发送心跳包不成功,则将SuccessHeart心跳失败次数加1后,判断SuccessHeart心跳失败次数是否大于或者等于第二预定失败次数,若是,则说明该稳定心跳包时间间隔SuccessHeart已经不合适了,需要重新进行智能心跳自适应计算,即满足了智能心跳自适应计算条件,将当前心跳包时间间隔CurHeart设置为预设最小心跳包时间间隔MinHeart后,进入自适应计算态,进入上述用当前心跳包时间间隔CurHeart进行心跳测试的过程。如果SuccessHeart心跳失败次数小于第二预定失败次数,则说明暂时还不足以判定该稳定心跳包时间间隔SuccessHeart是否合适,返回继续采用稳定心跳包时间间隔SuccessHeart发送心跳包。该第二预定失败次数,可以基于实际需要进行设定,在本发明的具体示例中,该第二预定失败次数可以设置为5次。
据此,在后台稳定态,是在用稳定心跳包时间间隔发送心跳包失败的次数连续达到第二预定失败次数时,才判定后台稳定态不可信,需要进入自适应计算态重新确定稳定心跳包时间间隔。从而避免了快速变化的网络环境而产生的不利影响,例如地铁、列车等等。
在图4所示的示例中,在将当前心跳包时间间隔CurHeart设置为预设最小心跳包时间间隔MinHeart后,可先进行第一预定成功次数的延迟心跳测试,在确定网络处于稳定状态后,再进入用当前心跳包时间间隔进行心跳测试的自适应计算过程,以尽量保证测试结果的可靠性。图5中以三次延迟心跳测试为例,示出了一个具体示例中的延迟心跳测试实施例的流程示意图。
图5所示中,以最小心跳包时间间隔为4.5分钟为例,显示了在没有达到稳定网络环境时,会一直使用4.5分钟进行心跳直到满足3次连续测试条件。图5所示中,是先以一次完整测试进行说明,再以不能达到稳定测试环境的情况下的切换过程进行说明。当然,本领域技术人员可以理解的是,图5所示中仅仅只是一种示例性说明,具体的延迟心跳测试的次数也可以设置为其他次数,最小心跳包时间间隔也可以设置为其他值。
通过使用预定次数的延迟心跳测试,不仅可以剔除偶然失败和网络变化较大的情况(如地铁),使测试结果相对可靠,而且,在网络波动较大的情况下,采用预设最小心跳包时间间隔进行心跳(例如图5中所示的4.5分钟),也可以保证收取消息的及时性。
在上述根据当前心跳包时间间隔确定稳定心跳包时间间隔时,由于当前心跳包时间间隔的心跳测试已经失败,说明用当前心跳包时间间隔来发送心跳包是不合理的,因此,可以直接将上一次的当前心跳包时间间隔设定为稳定心跳包时间间隔,或者也可以是用当前心跳包时间间隔减去上述预定心跳增加步长得到的差值作为稳定心跳包时间间隔。
为了避免直接将上一次的当前心跳包时间间隔设定为稳定心跳包时间间隔时可能会靠近心跳包时间间隔的临界值,进而影响到心跳包发送的成功率以及心跳保活的稳定性,在本发明的一个具体示例中,可以是将上一次的当前心跳包时间间隔减去预设稳定心跳步长所得到的差值作为稳定心跳包时间间隔。
根据上述本发明的方案,在针对该应用建立了一个新的连接时,针对该新的连接,可以先采用预设最小心跳包时间间隔发送心跳包,并在采用该预设最小心跳包时间间隔发送心跳包连续成功第三预定成功次数后,再采用上述稳定心跳包时间间隔发送心跳包,以在确定新建的连接处于稳定状态后,再采用上述确定的稳定心跳包时间间隔发送心跳包。其中,该第三预定成功次数,可以根据实际需要做不同的设定,在本发明的一个具体示例中,该第三预定成功次数可以与上述第一预定成功次数相同。
根据上述本发明的各示例,图6中示出了一个具体示例中的动态调整心跳包时间间隔的流程示意图。在该示例中,是自前台活跃态开始进行说明。
如图6所示,在前台活跃态,即应用处于终端前台、且终端屏幕亮屏时,采用预设最小心跳包时间间隔发送心跳包。并持续监测应用所处的状态。
在监测到应用进入后台状态或者终端处于前台关屏状态时,以预设最小心跳包时间间隔作为当前心跳包时间间隔发送心跳包,且维持预定时间段后,或者是以预设最小心跳包时间间隔作为当前心跳包时间间隔发送心跳包连续成功第一预定成功次数后,以预设最小心跳包时间间隔作为当前心跳包时间间隔进行心跳测试。
若心跳测试成功,则判定满足测试成功条件,将当前心跳包时间间隔加上预定心跳增加步长作为新的当前心跳包时间间隔,即将当前心跳包时间间隔进行递进增加,然后返回用当前心跳包时间间隔进行心跳测试的步骤。
若心跳测试不成功,则将当前心跳包时间间隔心跳失败次数加1后,判断是否大于或者等于低于预设失败次数:若否,则返回用当前心跳包时间间隔进行心跳测试的步骤;若是,则判定满足测试失败条件,并根据当前心跳包时间间隔确定稳定心跳包时间间隔,具体确定时,可以直接将上一次的当前心跳包时间间隔确定为稳定心跳包时间间隔,也可以是将当前心跳包时间间隔减去预定心跳增加步长所得的值(实际上就是上一次的当前心跳包时间间隔)确定为稳定心跳包时间间隔。为了避免临界值,也可以是将上一次的心跳包时间间隔减去预设稳定心跳步长所得到的差值作为稳定心跳包时间间隔。
然后,即可用采用稳定心跳包时间间隔发送心跳包,并监测发送心跳包的状态。
若发送心跳包成功,则说明能够顺利发送心跳包,说明该稳定心跳包时间间隔是可信的,将稳定心跳包时间间隔心跳失败次数清零后,返回上述用稳定心跳包时间间隔发送心跳包的步骤。
若发送心跳包失败,则将稳定心跳包时间间隔心跳失败次数加1后,判断是否大于或者等于第二预定失败次数:若否,则说明该稳定心跳包时间间隔还不一定是不可信的,返回上述用稳定心跳包时间间隔发送心跳包的步骤;若是,则说明该稳定心跳包时间间隔已经不合适了,将预设最小心跳包时间间隔设定为当前心跳包时间间隔后,返回上述用当前心跳包时间将进行心跳测试的步骤。
为了剔除偶然失败和网络变化较大的情况(如地铁),使测试结果相对可靠,以及保证网络波动较大的情况收取消息的及时性,在将预设最小心跳包时间间隔设定为当前心跳包时间间隔后,可以先进行一定次数(例如3次、5次等)的延迟心跳测试,并在延迟心跳测试成功后,再进入上述用当前心跳包时间间隔进行测试的步骤。
图7中示出了一个具体示例中的动态调整心跳包时间间隔的流程示意图。与图6所示的示例类似,在该示例中,是自前台活跃态开始进行说明。与图6中的示例不同的地方在于,在该示例中,是以通过统计的方式确定是否满足测试成功条件和测试失败条件为例进行说明。
如图7所示,在前台活跃态,即应用处于终端前台、且终端屏幕亮屏时,采用预设最小心跳包时间间隔发送心跳包。并持续监测应用所处的状态。
在监测到应用进入后台状态或者终端处于前台关屏状态时,以预设最小心跳包时间间隔作为当前心跳包时间间隔发送心跳包,且维持预定时间段后,或者是以预设最小心跳包时间间隔作为当前心跳包时间间隔发送心跳包连续成功第一预定成功次数后,以预设最小心跳包时间间隔作为当前心跳包时间间隔进行心跳测试。
若心跳测试成功,则将当前心跳包时间间隔心跳成功次数加1。
若心跳测试失败,则将当前心跳包时间间隔心跳失败次数加1。
然后判断当前心跳包时间间隔心跳测试次数是否大于或者等于预定测试次数:
若否,即当前心跳包时间间隔心跳测试次数小于预定测试次数,则返回继续采用当前心跳包会见间隔进行心跳测试;
若是,即当前心跳包时间间隔心跳测试次数大于或者等于预定测试次数,则根据上述当前心跳包时间间隔心跳成功次数、预定测试次数确定当前心跳包时间间隔心跳成功率,并判断该当前心跳包时间间隔心跳成功率是否大于或者等于预定成功率门限值。
若当前心跳包时间间隔心跳成功率大于或者等于预定成功率门限值,则判定满足测试成功条件,将当前心跳包时间间隔加上预定心跳增加步长作为新的当前心跳包时间间隔,即将当前心跳包时间间隔进行递进增加,然后返回用当前心跳包时间间隔进行心跳测试的步骤。
若当前心跳包时间间隔心跳成功率小于预定成功率门限值,则判定满足测试失败条件,并根据当前心跳包时间间隔确定稳定心跳包时间间隔,具体确定时,可以直接将上一次的当前心跳包时间间隔确定为稳定心跳包时间间隔,也可以是将当前心跳包时间间隔减去预定心跳增加步长所得的值(实际上就是上一次的当前心跳包时间间隔)确定为稳定心跳包时间间隔。为了避免临界值,也可以是将上一次的心跳包时间间隔减去预设稳定心跳步长所得到的差值作为稳定心跳包时间间隔。
然后即可采用稳定心跳包时间间隔发送心跳包,并监测发送心跳包的状态。
若发送心跳包成功,则说明能够顺利发送心跳包,说明该稳定心跳包时间间隔是可信的,将稳定心跳包时间间隔心跳失败次数清零后,返回上述用稳定心跳包时间间隔发送心跳包的步骤。
若发送心跳包失败,则将稳定心跳包时间间隔心跳失败次数加1后,判断是否大于或者等于第二预定失败次数:若否,则说明该稳定心跳包时间间隔还不一定是不可信的,返回上述用稳定心跳包时间间隔发送心跳包的步骤;若是,则说明该稳定心跳包时间间隔已经不合适了,将预设最小心跳包时间间隔设定为当前心跳包时间间隔后,返回上述用当前心跳包时间将进行心跳测试的步骤。
为了剔除偶然失败和网络变化较大的情况(如地铁),使测试结果相对可靠,以及保证网络波动较大的情况收取消息的及时性,在将预设最小心跳包时间间隔设定为当前心跳包时间间隔后,可以先进行一定次数(例如3次、5次等)的延迟心跳测试,并在延迟心跳测试成功后,再进入上述用当前心跳包时间间隔进行测试的步骤。
需要说明的是,图7所示的示例中,是以同时记录当前心跳包时间间隔心跳成功次数、当前心跳包时间间隔失败次数为例进行说明,在当前心跳包时间间隔心跳成功率来对是否满足测试成功条件、测试失败条件进行判断的情况下,也可以不记录当前心跳包时间间隔失败次数,只要知晓当前心跳包时间间隔心跳成功次数、以及已经测试的测试次数即可。本领域技术人员可以推导出的是,基于上述原理,也可以只记录当前心跳包时间间隔失败次数以及已经测试的测试次数,并通过计算当前心跳包时间间隔心跳失败率,并将该当前心跳包时间间隔心跳失败率与预先设定的预定失败率门限值进行判断,在此不予详加赘述。
基于上述与上述本发明的智能心跳保活方法相同的思想,本发明还提供一种智能心跳包括***。图8中示出了本发明的智能心跳保活***实施例的结构示意图。
如图8所示,在该示例中,本发明的智能心跳保活***包括有:
监测模块801,用于监测是否满足智能心跳自适应计算条件;
心跳测试模块802,用于在所述监测模块801监测到满足自适应计算条件时,或者根据步长增加模块804的结果,采用当前心跳包时间间隔进行心跳测试;
测试成功条件判定模块803,用于根据所述心跳测试模块802的测试结果判定是否满足测试成功条件;
步长增加模块804,用于在所述测试成功条件判定模块803判定满足测试成功条件时,将当前心跳包时间间隔加上预定心跳增加步长作为新的当前心跳包时间间隔;
测试失败条件判定模块805,用于根据所述心跳测试模块802的测试结果判定是否满足测试失败条件;
稳定心跳包确定模块806,用于在所述测试失败条件判定模块805判定满足测试失败条件时,根据当前心跳包时间间隔确定稳定心跳包时间间隔。
根据本发明实施例的***,具体的工作原理可以是如下所述:监测模块801监测是否满足智能心跳自适应计算条件,并在监测到满足时,由心跳测试模块802采用当前心跳包时间间隔进行心跳测试,测试成功条件判定模块803、测试失败条件判定模块805分别根据心跳测试模块802的测试结果判定是否满足测试成功条件、测试失败条件,在测试成功条件判定模块803判定满足测试成功条件时,步长增加模块804将当前心跳包时间间隔加上预定心跳增加步长作为新的当前心跳包时间间隔,并将该新的当前心跳包时间间隔传输给心跳测试模块802继续进行心跳测试,在测试失败条件判定模块805判定满足测试失败条件时,稳定心跳包确定模块806根据当前心跳包时间间隔确定稳定心跳包时间间隔,在后续过程中,即可采用该稳定心跳包时间间隔发送心跳包。
根据上述本发明实施例的***,其是通过对智能心跳自适应计算条件进行监测,并在满足智能心跳自适应计算条件时,通过进行心跳测试逐步对心跳包时间间隔进行调整,直至找到合适的稳定心跳包时间间隔,从而不仅可以得到与当前网络环境相适应的、能保持网络连接的尽可能大的心跳包时间间隔,由于心跳包时间间隔是尽可能大的,因而也可以在一定程度上节省电量、流量以及网络资源。
其中,上述监测模块801,可以是在在监测到应用处于后台状态或者终端处于前台关屏状态时,判定满足智能心跳自适应计算条件。
基于上述本发明的智能心跳保活***,图9中示出了本发明一个具体示例中的智能心跳保活***的结构示意图。图9所示中,该智能心跳保活***包括有监测模块801、测试前期处理模块808、心跳测试模块802、测试成功条件判定模块803、步长增加模块804、测试失败条件判定模块805、稳定心跳包确定模块806、稳定心跳状态统计模块807。在不同的实现方式下,智能心跳保活***所包含的各模块可能会有所不同,以下分别就其中的几种方式进行举例说明。
在其中一个示例中,该智能心跳保活***可以仅包括上述监测模块801、心跳测试模块802、测试成功条件判定模块803、步长增加模块804、测试失败条件判定模块805、稳定心跳包确定模块806、稳定心跳状态统计模块807。
其中,上述稳定心跳状态统计模块807,用于记录用稳定心跳包时间间隔发送心跳包连续失败的次数;
此时,上述监测模块801,还可以是在检测到稳态心跳统计模块807记录的连续失败的次数大于或者等于第二预定失败次数时,判定满足智能心跳自适应计算条件。
具体工作时,监测模块801监测是否满足智能心跳自适应计算条件,并在监测到满足时(例如应用处于后台状态或者终端处于前台关屏状态),由心跳测试模块802采用当前心跳包时间间隔进行心跳测试,测试成功条件判定模块803、测试失败条件判定模块805分别根据心跳测试模块802的测试结果判定是否满足测试成功条件、测试失败条件,在测试成功条件判定模块803判定满足测试成功条件时,步长增加模块804将当前心跳包时间间隔加上预定心跳增加步长作为新的当前心跳包时间间隔,并将该新的当前心跳包时间间隔传输给心跳测试模块802继续进行心跳测试,在测试失败条件判定模块805判定满足测试失败条件时,稳定心跳包确定模块806根据当前心跳包时间间隔确定稳定心跳包时间间隔,在后续过程中,即可采用该稳定心跳包时间间隔发送心跳包。稳定心跳状态统计模块807记录用稳定心跳包时间间隔发送心跳包连续失败的次数,并在记录的连续失败的次数大于或者等于第二预定失败次数时,监测模块801认为满足智能心跳自适应计算条件,由心跳测试模块802采用当前心跳包时间间隔进行心跳测试,重复上述过程。此时,由于该稳定心跳包时间间隔已经不可信,心跳测试模块802可以是将预设最小心跳包时间间隔设定为当前心跳包时间间隔进行心跳测试。
在另一个具体示例中,该智能心跳保活***可以仅包括上述监测模块801、测试前期处理模块808、心跳测试模块802、测试成功条件判定模块803、步长增加模块804、测试失败条件判定模块805、稳定心跳包确定模块806。
其中,上述测试前期处理模块808,用于在监测模块801监测到满足自适应计算条件后,采用预设最小心跳包时间间隔发送心跳包的方式维持预定时间段;
此时,上述心跳测试模块802,可以是在测试前期处理模块808采用预设最小心跳包时间间隔发送心跳包的方式维持预定时间段后,采用当前心跳包时间间隔进行心跳测试。
具体工作时,监测模块801监测是否满足智能心跳自适应计算条件,并在监测到满足时(例如应用处于后台状态或者终端处于前台关屏状态),测试前期处理模块808采用预设最小心跳包时间间隔发送心跳包的方式维持预定时间段后,由心跳测试模块802采用当前心跳包时间间隔进行心跳测试,测试成功条件判定模块803、测试失败条件判定模块805分别根据心跳测试模块802的测试结果判定是否满足测试成功条件、测试失败条件,在测试成功条件判定模块803判定满足测试成功条件时,步长增加模块804将当前心跳包时间间隔加上预定心跳增加步长作为新的当前心跳包时间间隔,并将该新的当前心跳包时间间隔传输给心跳测试模块802继续进行心跳测试,在测试失败条件判定模块805判定满足测试失败条件时,稳定心跳包确定模块806根据当前心跳包时间间隔确定稳定心跳包时间间隔,在后续过程中,即可采用该稳定心跳包时间间隔发送心跳包。
在另外一种实现方式中,上述测试前期处理模块808,用于在监测模块801监测到满足自适应计算条件后,采用预设最小心跳包时间间隔发送心跳包,并统计发送心跳包连续成功的次数;
此时,上述心跳测试模块802,可以是在测试前期处理模块808记录的发送心跳包连续成功的次数大于或者等于第一预定成功次数时,采用当前心跳包进行心跳测试。
具体工作时,监测模块801监测是否满足智能心跳自适应计算条件,并在监测到满足时(例如应用处于后台状态或者终端处于前台关屏状态),测试前期处理模块808采用预设最小心跳包时间间隔发送心跳包,且在连续成功第一预定成功次数后,由心跳测试模块802采用当前心跳包时间间隔进行心跳测试,测试成功条件判定模块803、测试失败条件判定模块805分别根据心跳测试模块802的测试结果判定是否满足测试成功条件、测试失败条件,在测试成功条件判定模块803判定满足测试成功条件时,步长增加模块804将当前心跳包时间间隔加上预定心跳增加步长作为新的当前心跳包时间间隔,并将该新的当前心跳包时间间隔传输给心跳测试模块802继续进行心跳测试,在测试失败条件判定模块805判定满足测试失败条件时,稳定心跳包确定模块806根据当前心跳包时间间隔确定稳定心跳包时间间隔,在后续过程中,即可采用该稳定心跳包时间间隔发送心跳包。
在其中一种工作方式中,该测试前期处理模块808,用于在监测模块801监测到满足自适应计算条件时,将当前心跳包时间间隔设定为预设最小心跳包时间间隔。此时,上述心跳测试模块802根据测试前期处理模块808确定的当前心跳包时间间隔进行测试。
具体工作时,监测模块801监测是否满足智能心跳自适应计算条件,并在监测到满足时(例如应用处于后台状态或者终端处于前台关屏状态),测试前期处理模块808将当前心跳包时间间隔设定为预设最小心跳包时间间隔,由心跳测试模块802采用当前心跳包时间间隔进行心跳测试,测试成功条件判定模块803、测试失败条件判定模块805分别根据心跳测试模块802的测试结果判定是否满足测试成功条件、测试失败条件,在测试成功条件判定模块803判定满足测试成功条件时,步长增加模块804将当前心跳包时间间隔加上预定心跳增加步长作为新的当前心跳包时间间隔,并将该新的当前心跳包时间间隔传输给心跳测试模块802继续进行心跳测试,在测试失败条件判定模块805判定满足测试失败条件时,稳定心跳包确定模块806根据当前心跳包时间间隔确定稳定心跳包时间间隔,在后续过程中,即可采用该稳定心跳包时间间隔发送心跳包。
在另一个具体示例中,该智能心跳保活***可以同时包括上述监测模块801、测试前期处理模块808、心跳测试模块802、测试成功条件判定模块803、步长增加模块804、测试失败条件判定模块805、稳定心跳包确定模块806、稳定心跳状态统计模块807。
基于如上所述的测试前期处理模块808的不同的处理方式,具体的工作方式也会有所不同,以下结合其中的几种工作原理进行说明。
在其中一种工作方式中:具体工作时,监测模块801监测是否满足智能心跳自适应计算条件,并在监测到满足时(例如应用处于后台状态或者终端处于前台关屏状态),测试前期处理模块808采用预设最小心跳包时间间隔发送心跳包的方式维持预定时间段后或者是采用预设最小心跳包时间间隔发送心跳包且连续成功第一预定成功次数后,由心跳测试模块802采用当前心跳包时间间隔进行心跳测试,测试成功条件判定模块803、测试失败条件判定模块805分别根据心跳测试模块802的测试结果判定是否满足测试成功条件、测试失败条件,在测试成功条件判定模块803判定满足测试成功条件时,步长增加模块804将当前心跳包时间间隔加上预定心跳增加步长作为新的当前心跳包时间间隔,并将该新的当前心跳包时间间隔传输给心跳测试模块802继续进行心跳测试,在测试失败条件判定模块805判定满足测试失败条件时,稳定心跳包确定模块806根据当前心跳包时间间隔确定稳定心跳包时间间隔,在后续过程中,即可采用该稳定心跳包时间间隔发送心跳包。稳定心跳状态统计模块807记录用稳定心跳包时间间隔发送心跳包连续失败的次数,并在记录的连续失败的次数大于或者等于第二预定失败次数时,监测模块801认为满足智能心跳自适应计算条件,测试前期处理模块808采用预设最小心跳包时间间隔发送心跳包的方式维持预定时间段后或者是采用预设最小心跳包时间间隔发送心跳包且连续成功第一预定成功次数后,由心跳测试模块802采用预设最小心跳包时间间隔作为当前心跳包时间间隔进行心跳测试,重复上述过程。
基于图9中所示的本发明的智能心跳保活***,图10、图11分别示出了一个具体示例中的测试成功条件判定模块803、测试失败条件判定模块805的结构示意图。
如图10所示,在该示例中,该测试成功条件判定模块803包括:
第二测试结果统计模块8031,用于记录采用当前心跳包时间间隔进行心跳测试连续成功的次数;
第一结果判定模块8032,用于在第二测试结果统计模块8031记录的连续成功的次数大于或者等于第二预定成功次数时,判定满足测试成功条件。
其中,上述第二预定成功次数,可以设置为1次,也可以设置为其他次数,例如3次、5次等等,在具体应用中可以做不同设定。
如图11所示,在该示例中,该测试失败条件判定模块805包括:
第三测试结果统计模块8051,用于记录采用当前心跳包时间间隔进行心跳测试累积失败的次数;
第二结果判定模块8052,用于在第三测试结果统计模块8051记录的累积的心跳测试累积失败的次数大于或者等于第一预定失败次数时,判定满足测试失败条件。
其中,上述第一预定失败次数,基于实际应用需要可以做不同的设定,例如1次、3次、5次等等,具体应用中可以做不同的设定。
基于上述本发明的智能心跳保活***,图12中示出了本发明的另一个具体示例中的智能心跳保活***的结构示意图。图12所示中,该智能心跳保活***包括有监测模块801、测试前期处理模块808、心跳测试模块802、测试成功条件判定模块803、步长增加模块804、测试失败条件判定模块805、稳定心跳包确定模块806、稳定心跳状态统计模块807以及第一测试结果统计模块809。
其中,上述第一测试结果统计模块809,用于记录采用当前心跳包时间间隔进行预定测试次数的心跳测试的测试成功次数以及测试失败次数,并根据测试成功次数和测试失败次数确定成功率;
此时,上述测试成功条件判定模块803,用于在测试结果统计模块809的确定的成功率大于或者等于预定成功率门限值时,判定满足测试成功条件。
所述测试失败条件判定模块805,用于在测试结果统计模块809的确定的成功率小于预定成功率门限值时,判定满足测试失败条件。
在不同的实现方式下,智能心跳保活***所包含的各模块可能会有所不同,以下分别就其中的几种方式进行举例说明。
在其中一个示例中,该智能心跳保活***可以仅包括上述监测模块801、心跳测试模块802、第一测试结果统计模块809、测试成功条件判定模块803、步长增加模块804、测试失败条件判定模块805、稳定心跳包确定模块806。
具体工作时,监测模块801监测是否满足智能心跳自适应计算条件,并在监测到满足时(例如应用处于后台状态或者终端处于前台关屏状态),由心跳测试模块802采用当前心跳包时间间隔进行心跳测试,第一测试结果统计模块809记录采用当前心跳包时间间隔进行预定测试次数的心跳测试的测试成功次数以及测试失败次数,并根据测试成功次数和测试失败次数确定成功率,测试成功条件判定模块803、测试失败条件判定模块805分别根据第一测试结果统计模块809确定的成功率判定是否满足测试成功条件、测试失败条件,在测试成功条件判定模块803判定满足测试成功条件时,步长增加模块804将当前心跳包时间间隔加上预定心跳增加步长作为新的当前心跳包时间间隔,并将该新的当前心跳包时间间隔传输给心跳测试模块802继续进行心跳测试,在测试失败条件判定模块805判定满足测试失败条件时,稳定心跳包确定模块806根据当前心跳包时间间隔确定稳定心跳包时间间隔,在后续过程中,即可采用该稳定心跳包时间间隔发送心跳包。
在另一个示例中,该智能心跳保活***可以仅包括上述监测模块801、心跳测试模块802、第一测试结果统计模块809、测试成功条件判定模块803、步长增加模块804、测试失败条件判定模块805、稳定心跳包确定模块806、稳定心跳状态统计模块807。
具体工作时,监测模块801监测是否满足智能心跳自适应计算条件,并在监测到满足时(例如应用处于后台状态或者终端处于前台关屏状态),由心跳测试模块802采用当前心跳包时间间隔进行心跳测试,第一测试结果统计模块809记录采用当前心跳包时间间隔进行预定测试次数的心跳测试的测试成功次数以及测试失败次数,并根据测试成功次数和测试失败次数确定成功率,测试成功条件判定模块803、测试失败条件判定模块805分别根据第一测试结果统计模块809确定的成功率判定是否满足测试成功条件、测试失败条件,在测试成功条件判定模块803判定满足测试成功条件时,步长增加模块804将当前心跳包时间间隔加上预定心跳增加步长作为新的当前心跳包时间间隔,并将该新的当前心跳包时间间隔传输给心跳测试模块802继续进行心跳测试,在测试失败条件判定模块805判定满足测试失败条件时,稳定心跳包确定模块806根据当前心跳包时间间隔确定稳定心跳包时间间隔,在后续过程中,即可采用该稳定心跳包时间间隔发送心跳包。稳定心跳状态统计模块807记录用稳定心跳包时间间隔发送心跳包连续失败的次数,并在记录的连续失败的次数大于或者等于第二预定失败次数时,监测模块801认为满足智能心跳自适应计算条件,由心跳测试模块802采用预设最小心跳包时间间隔作为当前心跳包时间间隔进行心跳测试,重复上述过程。
在另一个具体示例中,该智能心跳保活***可以仅包括上述监测模块801、测试前期处理模块808、心跳测试模块802、第一测试结果统计模块809、测试成功条件判定模块803、步长增加模块804、测试失败条件判定模块805、稳定心跳包确定模块806。
具体工作时,监测模块801监测是否满足智能心跳自适应计算条件,并在监测到满足时(例如应用处于后台状态或者终端处于前台关屏状态),测试前期处理模块808采用预设最小心跳包时间间隔发送心跳包的方式维持预定时间段后或者是采用预设最小心跳包时间间隔发送心跳包且连续成功第一预定成功次数后,由心跳测试模块802采用当前心跳包时间间隔进行心跳测试,第一测试结果统计模块809记录采用当前心跳包时间间隔进行预定测试次数的心跳测试的测试成功次数以及测试失败次数,并根据测试成功次数和测试失败次数确定成功率,测试成功条件判定模块803、测试失败条件判定模块805分别根据第一测试结果统计模块809确定的成功率判定是否满足测试成功条件、测试失败条件,在测试成功条件判定模块803判定满足测试成功条件时,步长增加模块804将当前心跳包时间间隔加上预定心跳增加步长作为新的当前心跳包时间间隔,并将该新的当前心跳包时间间隔传输给心跳测试模块802继续进行心跳测试,在测试失败条件判定模块805判定满足测试失败条件时,稳定心跳包确定模块806根据当前心跳包时间间隔确定稳定心跳包时间间隔,在后续过程中,即可采用该稳定心跳包时间间隔发送心跳包。
在另一个具体示例中,该智能心跳保活***可以同时包括上述监测模块801、测试前期处理模块808、心跳测试模块802、第一测试结果统计模块809、测试成功条件判定模块803、步长增加模块804、测试失败条件判定模块805、稳定心跳包确定模块806、稳定心跳状态统计模块807。
具体工作时,监测模块801监测是否满足智能心跳自适应计算条件,并在监测到满足时(例如应用处于后台状态或者终端处于前台关屏状态),测试前期处理模块808采用预设最小心跳包时间间隔发送心跳包的方式维持预定时间段后或者是采用预设最小心跳包时间间隔发送心跳包且连续成功第一预定成功次数后,由心跳测试模块802采用当前心跳包时间间隔进行心跳测试,第一测试结果统计模块809记录采用当前心跳包时间间隔进行预定测试次数的心跳测试的测试成功次数以及测试失败次数,并根据测试成功次数和测试失败次数确定成功率,测试成功条件判定模块803、测试失败条件判定模块805分别根据第一测试结果统计模块809确定的成功率判定是否满足测试成功条件、测试失败条件,在测试成功条件判定模块803判定满足测试成功条件时,步长增加模块804将当前心跳包时间间隔加上预定心跳增加步长作为新的当前心跳包时间间隔,并将该新的当前心跳包时间间隔传输给心跳测试模块802继续进行心跳测试,在测试失败条件判定模块805判定满足测试失败条件时,稳定心跳包确定模块806根据当前心跳包时间间隔确定稳定心跳包时间间隔,在后续过程中,即可采用该稳定心跳包时间间隔发送心跳包。稳定心跳状态统计模块807记录用稳定心跳包时间间隔发送心跳包连续失败的次数,并在记录的连续失败的次数大于或者等于第二预定失败次数时,监测模块801认为满足智能心跳自适应计算条件,测试前期处理模块808采用预设最小心跳包时间间隔发送心跳包的方式维持预定时间段后或者是采用预设最小心跳包时间间隔发送心跳包且连续成功第一预定成功次数后,由心跳测试模块802采用预设最小心跳包时间间隔作为当前心跳包时间间隔进行心跳测试,重复上述过程。
本领域普通技术人员可以理解的是,实现上述本发明实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。因此,根据上述本发明实施例方案,本发明还提供一种包含计算机可读程序的存储介质,当该存储介质中的计算机可读程序执行时,可以实现上述任何一种方式中的本发明的智能心跳保活方法。
如上所述的本发明实施例的方法,可以以软件的形式安装于相应的机器设备上,并在该软件运行时通过控制相关的处理设备来完成上述的智能心跳保活的过程。相应地,上述智能心跳保活***可以是设置安装在相应的终端设备上,也可以是相应的终端设备本身,这里的终端设备可以是手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、车载电脑等任意终端设备。
据此,基于上述本发明的方案,本发明还提供一种终端设备,该终端设备可以是手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、车载电脑等任意一种可以进行路径导航的终端设备。
据此,以下以其中一种终端设备为例,图13中示出了该终端设备的部分结构框图。参考图13,该终端设备包括:存储器1310、输入单元1320、显示单元1330、处理器1340、通信模块1350等部件。本领域技术人员可以理解,图13中示出的结构,仅仅是与本发明实施例方案相关的部分结构的框图,并不构成对应用在本发明方案中的终端设备的限定,具体的终端设备可以包括比图示中更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图13对该终端设备的各个构成部件进行具体的介绍。
存储器1310可用于存储软件程序以及模块,处理器1340通过运行存储在存储器1310的软件程序以及模块,从而执行与该终端设备相关的各种功能应用以及数据处理。存储器1310可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器1310可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元1320可用于接收输入的数字、字符或者其他信息,以及产生与终端设备的用户设置以及功能控制有关的键信号输入。具体在本发明实施例的方案中,可以通过该输入单元1320来接受用户确定的目的地信息。
具体地,以终端设备为手机为例,该输入单元1320可包括触控面板以及其他输入设备。触控面板,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1340,并能接收处理器1340发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板。除了触控面板,输入单元1320还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1330可用于显示由用户输入的信息或提供给用户的信息以及各种菜单。显示单元1330可包括显示面板,可选的,可以采用液晶显示器(LiquidCrystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板。
终端设备通过通信模块1350可以实现与服务器之间的通信,该通信模块1350可以采用任何可能的方式实现,例如WiFi模块、蓝牙通信、光纤通信等等,通过通信模块1350实现了终端设备与服务器之间的通信,从而可以使得终端设备能够向服务器发送相关信息,并接收由服务器返回的相关信息。
处理器1340是终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分,通过运行或执行存储在存储器1310内的软件程序和/或模块,以及调用存储在存储器1310内的数据,执行终端设备的各种功能和数据处理,从而对终端设备进行整体监控。可选的,处理器1340可包括一个或多个处理单元。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。