CN106201811B - 应用程序的故障恢复方法和终端 - Google Patents
应用程序的故障恢复方法和终端 Download PDFInfo
- Publication number
- CN106201811B CN106201811B CN201610528809.0A CN201610528809A CN106201811B CN 106201811 B CN106201811 B CN 106201811B CN 201610528809 A CN201610528809 A CN 201610528809A CN 106201811 B CN106201811 B CN 106201811B
- Authority
- CN
- China
- Prior art keywords
- activity component
- mark
- target activity
- identifier information
- target
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/261—Functional testing by simulating additional hardware, e.g. fault simulation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供一种应用程序的故障恢复方法和终端。该方法包括:在目标Activity组件启动成功后,保存所述目标Activity组件的第一标识信息和所述第一标识信息对应的intent数据;若检测到所述目标Activity组件对应的应用程序发生异常,则获取当前的运行环境信息,并对所述运行环境信息进行解析,得到第二标识信息;判断所述第二标识信息和所述第一标识信息是否匹配;若匹配,则根据所述intent数据,重新启动所述目标Activity组件。本发明实施例的方法,避免现有技术中应用程序发生概率性异常时,直接跳出关闭或者停在当前异常页面不动的现象发生,大大提高了用户的体验效果。
Description
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种应用程序的故障恢复方法和终端。
背景技术
目前运营商定制化开发的网络机顶盒不断打入市场,而定制化开发的关键便是集成某些特定的关键应用,如网管(Termination Management,简称TM)、点播、直播等。这些关键的应用程序(在本专利中称为白名单应用程序),一方面保证了运营商的利益,同时也为用户提供了传统机顶盒更丰富的网络视频资源。这些白名单应用程序良好运行状态便是用户体验的关键因素,也是终端产品的核心竞争力。
对于运行在网络机顶盒或者其他智能终端上的应用程序,或多或少会出现一些异常(Exception),如空指针、缓存溢出(out of memory)、超时(time out)等,因此在开发该应用程序时,开发人员会设计一些容错机制,对应用程序出现的一些异常进行规避和处理,保证应用程序可以正常运行。
但是,即使程序员在程序开发过程中考虑了各种异常情况,并尽量对各种异常进行规避,也往往无法完全模拟真实的使用场景,对于应用程序在一些无法模拟的真实场景下产生的概率性异常,应用程序自身无法进行故障恢复,呈现给用户的即就是程序跳出或者程序崩溃的情景,用户的体验性较差。
发明内容
本发明实施例提供一种应用程序的故障恢复方法和终端,用以解决现有技术中当应用程序呈现研发人员未规避的异常(即概率性异常)时,应用程序直接跳出关闭或者停在当前异常页面不动,用户的体验性较差的技术问题。
第一方面,本发明实施例提供一种应用程序的故障恢复方法,包括:
在目标Activity组件启动成功后,保存所述目标Activity组件的第一标识信息和所述第一标识信息对应的intent数据;其中,所述第一标识信息包括所述目标Activity组件对应的第一应用程序包标识和所述目标Activity组件的标识;
若检测到所述目标Activity组件对应的应用程序发生异常,则获取当前的运行环境信息,并对所述运行环境信息进行解析,得到第二标识信息;其中,所述第二标识信息包括发生异常的第二应用程序包标识和异常的Activity组件标识;
判断所述第二标识信息和所述第一标识信息是否匹配;
若匹配,则根据所述intent数据,重新启动所述目标Activity组件。
在一种可能的实施方式中,所述在目标Activity组件启动成功后,保存所述目标Activity组件的第一标识信息和所述第一标识信息对应的intent数据,具体包括:
在启动所述目标Activity组件后,获取所述第一应用程序包标识和所述目标Activity组件的标识;
根据所述第一应用程序包标识判断所述目标Activity组件对应的应用程序是否为白名单应用;
若所述目标Activity组件对应的应用程序为白名单应用,则从Activity栈中获取最顶层的Activity的标识,并判断所述最顶层的Activity的标识是否与所述目标Activity组件的标识匹配;
若匹配,则确定所述目标Activity组件启动成功,并将所述第一标识信息和所述intent数据保存至数据库中。
在另一种可能的实施方式中,所述判断所述第二标识信息和所述第一标识信息是否匹配,具体包括:
判断所述第二应用程序包标识是否与所述第一应用程序包标识相同;
判断所述目标Activity组件的标识和所述异常的Activity组件标识是否相同;
若所述第二应用程序包标识与所述第一应用程序包标识相同、且所述目标Activity组件的标识和所述异常的Activity组件标识相同,则确定所述第二标识信息和所述第一标识信息匹配。
在又一种可能的实施方式中,所述方法还包括:
若所述目标Activity组件正常退出,删除数据库中所保存的所述目标Activity组件的第一标识信息和所述第一标识信息对应的intent数据。
在另一种可能的实施方式中,所述方法还包括:
保存所述目标Activity组件对应的应用程序的异常信息。
在另一种可能的实施方式中,所述方法还包括:
在重新启动所述目标Activity组件时,向用户输出提示信息;所述提示信息用于提示用户正在重新加载页面。
第二方面,本发明实施例提供一种终端,包括:
存储模块,用于在目标Activity组件启动成功后,保存所述目标Activity组件的第一标识信息和所述第一标识信息对应的intent数据;其中,所述第一标识信息包括所述目标Activity组件对应的第一应用程序包标识和所述目标Activity组件的标识;
获取模块,用于在检测到所述目标Activity组件对应的应用程序发生异常时,获取当前的运行环境信息,并对所述运行环境信息进行解析,得到第二标识信息;其中,所述第二标识信息包括发生异常的第二应用程序包标识和异常的Activity组件标识;
判断模块,用于判断所述第二标识信息和所述第一标识信息是否匹配;
处理模块,用于在所述判断模块判断第二标识信息和所述第一标识信息匹配时,根据所述intent数据,重新启动所述目标Activity组件。
在另一种可能的实施方式中,所述存储模块,具体包括:
获取单元,用于在启动所述目标Activity组件后,获取所述第一应用程序包标识和所述目标Activity组件的标识;
第一判断单元,用于根据所述第一应用程序包标识判断所述目标Activity组件对应的应用程序是否为白名单应用;
第二判断单元,用于在所述第一判断单元根据所述第一应用程序包标识判断所述目标Activity组件对应的应用程序为白名单应用时,从Activity栈中获取最顶层的Activity的标识,并判断所述最顶层的Activity的标识是否与所述目标Activity组件的标识匹配;
保存单元,用于在所述第二判断单元判断所述最顶层的Activity的标识与所述目标Activity组件的标识匹配时,确定所述目标Activity组件启动成功,并将所述第一标识信息和所述intent数据保存至数据库中。
在又一种可能的实施方式中,所述判断模块,具体用于判断所述第二应用程序包标识是否与所述第一应用程序包标识相同,以及判断所述目标Activity组件的标识和所述异常的Activity组件标识是否相同,并在判断所述第二应用程序包标识与所述第一应用程序包标识相同、且所述目标Activity组件的标识和所述异常的Activity组件标识相同时,确定所述第二标识信息和所述第一标识信息匹配。
在另一种可能的实施方式中,所述处理模块,还用于在所述目标Activity组件正常退出时,删除数据库中所保存的所述目标Activity组件的第一标识信息和所述第一标识信息对应的intent数据。
在另一种可能的实施方式中,所述存储模块,还用于保存所述目标Activity组件对应的应用程序的异常信息。
在又一种可能的实施方式中,所述处理模块,还用于在重新启动所述目标Activity组件时,向用户输出提示信息;所述提示信息用于提示用户正在重新加载页面。
本发明实施例提供的应用程序的故障恢复方法和终端,通过在目标Activity组件启动成功后,保存该目标Activity组件的第一标识信息和该第一标识信息对应的intent数据,并在检测到所述目标Activity组件对应的应用程序发生异常时,获取并解析当前的运行环境信息,得到第二标识信息,进而在判断第二标识信息和第一标识信息匹配时,通过保存的intent数据重新启动目标Activity组件,从而使得终端可以重新加载该目标Activity组件,以通过重新加载来克服该概率性异常,避免了现有技术中应用程序发生概率性异常时,直接跳出关闭或者停在当前异常页面不动的现象发生,大大提高了用户的体验效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的应用程序的故障恢复方法实施例一的流程示意图;
图2为本发明实施例提供的应用程序的故障恢复方法实施例二的流程示意图;
图3为本发明实施例提供的应用程序的故障恢复方法实施例三的流程示意图;
图4为本发明实施例提供的应用程序的故障恢复方法实施例四的流程示意图;
图5为本发明实施例提供的终端实施例一的流程示意图;
图6为本发明实施例提供的终端实施例二的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例所涉及的终端,可以是电视、网络机顶盒、手机、智能空调、平板电脑等任一能够运行应用程序的终端,本发明实施例对终端的形式并不做限制。
本发明实施例涉及的应用程序,可以是运行在Android(安卓)系统上的应用程序,该应用程序可以简称为APK,其一般由一个或多个程序组件组成,即Activity组件(也可以称为页面组件)、Service组件、BroadcastRecieve组件、ContentProvier组件等。其中,Activity组件即为呈现给用户的页面。
以启动Activity组件为例,Android系统一般在启动一个应用程序(APK)的Activity组件时(例如当前呈现的Activity组件想要打开另一个Activity组件),其主要是通过intent请求(即该intent请求即为传递意图的请求,可以称为意图请求)来传递意图。因此,当前呈现的Activity组件会将intent请求传递给Android系统,Android系统的包管理服务程序(PackageManager)在接收到该intent请求后,会根据该intent请求和每个待启动的Activity组件的intentFilter进行匹配,由于该intentFilter可以表征一个待启动的Activity组件当前可以处理哪种类型的intent请求,因此,PackageManager就可以根据每个待启动的Activity组件的intentFilter确定出能够处理该intent请求的目标Activity组件,然后将该intent请求传递给目标Activity组件,从而启动目标Activity组件。
当启动了目标Activity组件之后,该目标Activity组件上可以包括多个功能,当其中的一个或者多个功能故障时,或者当从目标Activity组件跳转至另一Activity组件故障时,如果开发人员未对这些故障场景设置相应的容错机制,即该目标Activity组件对应的应用程序自身无法进行主动修复,则该应用程序就会直接跳出关闭或者停在当前异常页面不动,用户的体验性较差。
因此,本发明实施例提供的应用程序的故障恢复方法和终端,旨在解决现有技术中当应用程序呈现研发人员未规避的异常(即概率性异常)时,应用程序直接跳出关闭或者停在当前异常页面不动,用户的体验性较差的技术问题。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1为本发明实施例提供的应用程序的故障恢复方法实施例一的流程示意图。本实施例涉及的是通过保存正常启动的目标Activity组件(该目标Activity组件可以称为目标页面组件或者目标活动组件)的第一标识信息和intent数据,在目标Activity组件对应的应用程序发生异常时,通过根据所保存的第一标识信息和intent数据(该intent数据可以称为意图数据),重新启动目标Activity组件,以使得应用程序发生异常时,应用程序可以会退到故障前的页面的具体过程。如图1所示,该方法可以包括:
S101:在目标Activity组件启动成功后,保存所述目标Activity组件的第一标识信息和所述第一标识信息对应的intent数据。
其中,所述第一标识信息包括所述目标Activity组件对应的第一应用程序包标识和所述目标Activity组件的标识。
具体的,当目标Activity组件根据所传递的intent请求启动成功后,终端可以保存该目标Activity组件的第一标识信息和该第一标识信息对应的intent数据,该intent数据可以为extra数据,还可以为action数据,还可以为extra数据和action数据。
可选的,上述intent请求可以包括目标Activity组件对应的第一应用程序包标识(packagename)、目标Activity组件的标识(activityname)、extra数据和action数据;可选的,该intent请求也可以单独包括extra数据和action数据,本实施例对intent请求中包括的具体内容并不做限定。
当intent请求包括目标Activity组件对应的第一应用程序包标识(packagename)、目标Activity组件的标识(activityname)、extra数据和action数据时,终端可以通过解析该intent请求获得第一标识信息和intent数据;当intent请求仅包括extra数据和action数据时,终端可以在启动目标Activity组件之后,通过该目标Activity组件获得第一标识信息,通过intent请求获得intent数据。
S102:若检测到所述目标Activity组件对应的应用程序发生异常,则获取当前的运行环境信息,并对所述运行环境信息进行解析,得到第二标识信息。
其中,所述第二标识信息包括发生异常的第二应用程序包标识和异常的Activity组件标识。
具体的,当目标Activity组件启动成功并保存该目标Activity组件的第一标识信息和第一标识信息对应的intent数据之后,如果终端检测到该目标Activity组件对应的应用程序发生异常时(该异常为应用程序无法自身修复的概率性异常),例如启动的目标Activity组件呈现给用户的某些功能不可用,或者由该目标Activity组件跳转至另一Activity组件时异常,终端可以获取当前应用程序的运行环境信息,并对其进行解析,得到第二标识信息,即获得发生异常的第二应用程序包标识和异常的Activity组件标识。需要说明的是,上述运行环境信息记录了整个应用程序在运行时的过程信息,同时也包括当前应用程序在发生异常时的异常信息。该运行环境信息可以以文件的形式存在,当应用程序异常时,系统可以调用该文件获取当前的运行环境信息,例如,其可以是log文件的形式存在,本发明对当前运行环境信息的存储形式并不做限定。
S103:判断所述第二标识信息和所述第一标识信息是否匹配。
S104:若匹配,则根据所述intent数据,重新启动所述目标Activity组件。
具体的,当判断上述第二标识信息和所述第一标识信息匹配时,说明终端之前保存了目标Activity组件的记录,因此,终端可以再次拉起intent请求,并将之前保存的intent数据重新携带在intent请求中传递给Android系统,从而使得Android系统在此根据intent请求发起启动上述目标Activity组件的流程,从而重新启动目标Activity组件。也就是说,当第一次启动目标Activity组件时,若该应用程序发生概率性异常时,终端可以通过之前保存的第一标识信息和intent数据重新加载该目标Activity组件,以通过重新加载来克服该概率性异常,避免了现有技术中当应用程序出现异常时,由于Android系统对于应用程序正常运行的环境并没有任何记录,从而使得应用程序直接跳出关闭或者停在当前异常页面不动的现象发生,从而大大提高了用户的体验效果。
本发明实施例提供的应用程序的故障恢复方法,通过在目标Activity组件启动成功后,保存该目标Activity组件的第一标识信息和该第一标识信息对应的intent数据,并在检测到所述目标Activity组件对应的应用程序发生异常时,获取并解析当前的运行环境信息,得到第二标识信息,进而在判断第二标识信息和第一标识信息匹配时,通过保存的intent数据重新启动目标Activity组件,从而使得终端可以重新加载该目标Activity组件,以通过重新加载来克服该概率性异常,避免了现有技术中应用程序发生概率性异常时,直接跳出关闭或者停在当前异常页面不动的现象发生,大大提高了用户的体验效果。
可选的,上述终端判断第二标识信息和所述第一标识信息是否匹配,可以参见图2所示的实施例二的流程示意图。如图2所示,在上述实施例的基础上,进一步地,上述S103具体可以包括:
S201:判断所述第二应用程序包标识是否与所述第一应用程序包标识相同。
S202:判断所述目标Activity组件的标识和所述异常的Activity组件标识是否相同。
S203:若所述第二应用程序包标识与所述第一应用程序包标识相同、且所述目标Activity组件的标识和所述异常的Activity组件标识相同,则确定所述第二标识信息和所述第一标识信息匹配。
具体的,当第二应用程序包标识与第一应用程序包标识相同、且目标Activity组件的标识和上述异常的Activity组件标识相同,说明终端之前保存了目标Activity组件的记录,因此,终端可以再次拉起intent请求,即从数据库中获取该第一标识信息对应的intent数据,以重新启动上述目标Activity组件。可选的,本发明实施例对上述S201和S202的执行顺序并不做限定,二者可以同时执行,也可以是S201在S202之前执行,或者S202在S201之前执行。
图3为本发明实施例提供的应用程序的故障恢复方法实施例三的流程示意图。由于Android系统是一个开源的系统,用户可以轻松实现各类应用的自安装,但如果对于所有的APK都采用故障恢复方法,有可能会引入其它问题,因为一些非官方的APK可能未进行任何的验证,问题较多。所以,为规避这种问题,终端内部设置了一些系统关键应用,即白名单应用,并将白名单应用的应用程序包的标识记录在数据库中,从而使得终端仅对白名单应用发生异常时,执行故障恢复流程。即,在上述实施例的基础上,进一步地,上述S101具体可以包括:
S301:在启动所述目标Activity组件后,获取所述第一应用程序包标识和所述目标Activity组件的标识。
S302:根据所述第一应用程序包标识判断所述目标Activity组件对应的应用程序是否为白名单应用。
S303:若所述目标Activity组件对应的应用程序为白名单应用,则从Activity栈中获取最顶层的Activity的标识,并判断所述最顶层的Activity的标识是否与所述目标Activity组件的标识匹配。
S304:若匹配,则确定所述目标Activity组件启动成功,并将所述第一标识信息和所述intent数据保存至数据库中。
具体的,当目标Activity组件根据所传递的intent请求进行启动后(这里不一定启动成功),终端就可以是获得该目标Activity组件的第一应用程序包标识和该目标Activity组件的标识;之后,终端可以预先记录当前的启动环境信息,即记录目标Activity组件接收到的intent请求,然后终端判断第一应用程序包标识是否与数据库中保存的白名单应用的应用程序包标识相同,如果相同,则表明当前目标Activity组件对应的应用程序为白名单应用;进一步地,当终端确定当前目标Activity组件对应的应用程序为白名单应用时,终端可以读取Activity栈的Activity列表,获得Activity栈的最顶层的Activity的标识,并判断最顶层的Activity的标识是否与上述目标Activity组件的标识匹配,如果匹配,则表明上述目标Activity组件启动成功,终端可以读取之前记录的intent请求,从而将第一标识信息和intent数据保存在数据库中。可选的,在保存时,可以是以数据库文件的形式进行保存,即将第一标识信息作为关键字(或者索引),例如com.hisense.test/com.hisense.test.mainActivity,将intent数据作为该关键字所指向的值。
可选的,如果保存第一标识信息和intent数据之后,目标Activity组件正常退出,例如用户选择退出当前目标Activity组件的页面,则终端可以再次查询数据库,通过目标Activity组件的第一标识信息判断数据库中是否保存了该目标Activity组件的记录(即intent数据和第一标识信息),如果确定数据库中保存了该目标Activity组件的记录,则将该记录从数据库中删除,从而可以避免缓存溢出,大大提高了缓存效率。
可选的,当重新启动上述目标Activity组件的过程中,可以向用户输出提示信息,该所述提示信息用于提示用户正在重新加载页面,可选的,该提示信息可以是语音信息,还可以是图片信息,还可以是文字信息,例如,在页面提示“正在重新加载中”的信息,从而为用户提供较好的体验。
可选的,当检测到上述目标Activity组件对应的应用程序发生异常时,终端可以保存在异常信息,即将该异常信息写入日志文件中,不仅如此,终端还可以将发生异常的时间、运行该应用程序的设备(即终端)的网络互连协议(IP)地址、运行该应用程序的设备的MAC地址、该设备的产品型号、该设备上的Rom版本,以及该应用程序的版本信息写入日志文件(该日志文件中的内容可以时间+MAC地址命令的形式进行保存),从而方便开发人员能够根据该日志文件进行故障定位,彻底解决安全隐患。可选的,终端还可以将该异常信息上传至网络服务器,从而为解决该概率性异常提供更大的解决接口,进一步减少了该概率性异常的解决周期,提高了解决效率。
图4为本发明实施例提供的应用程序的故障恢复方法实施例四的流程示意图。本实施例涉及的是在应用程序发生概率性异常时,终端重新启动目标Activity组件的具体过程。如图4所示,该方法具体可以包括如下步骤:
S401:Android系统在获取到intent请求后,将该intent请求传递给多个待启动的Activity组件。
S402:Android系统根据每个待启动的Activity组件的intentFilter和上述intent请求,确定目标Activity组件。
S403:Android系统将上述intent请求传递给目标Activity组件,以启动目标Activity组件。
S404:在启动目标Activity组件后,获取目标Activity组件的第一标识信息,即获取目标Activity组件对应的第一应用程序包标识和所述目标Activity组件的标识。
S405:根据所述第一应用程序包标识判断所述目标Activity组件对应的应用程序是否为白名单应用。
S406:若所述目标Activity组件对应的应用程序为白名单应用,则记录当前的启动环境信息,即记录目标Activity组件的第一标识信息和intent数据。
S407:从Activity栈中获取最顶层的Activity的标识,并判断所述最顶层的Activity的标识是否与所述目标Activity组件的标识匹配。
S408:若匹配,则确定所述目标Activity组件启动成功,并将所述第一标识信息和所述intent数据保存至数据库中。
S409:若目标Activity组件正常退出,则删除数据库中所保存的所述目标Activity组件对应的intent数据和所述第一标识信息。
S410:若检测到所述目标Activity组件对应的应用程序发生异常,则获取当前的运行环境信息,并对所述运行环境信息进行解析,得到第二标识信息。
其中,所述第二标识信息包括发生异常的第二应用程序包标识和异常的Activity组件标识。
S411:判断所述第二标识信息和所述第一标识信息是否匹配。
S412:若匹配,则根据所述intent数据,重新启动所述目标Activity组件。
S413:在重新启动所述目标Activity组件时,向用户输出提示信息;所述提示信息用于提示用户正在重新加载页面。
S414:保存所述目标Activity组件对应的应用程序的异常信息。
具体的,上述S401至S414的具体过程可以参见上述几个实施例的具体描述,在此不再赘述。
需要说明的是,上述S409与S410至S414之间并没有时序关系的限定,上述S413和S414也没有时序关系的限定。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图5为本发明实施例提供的终端实施例一的流程示意图。如图5所示,该终端可以包括:存储模块10、获取模块11、判断模块12和处理模块13。
具体的,存储模块10,用于在目标Activity组件启动成功后,保存所述目标Activity组件的第一标识信息和所述第一标识信息对应的intent数据;其中,所述第一标识信息包括所述目标Activity组件对应的第一应用程序包标识和所述目标Activity组件的标识;
获取模块11,用于在检测到所述目标Activity组件对应的应用程序发生异常时,获取当前的运行环境信息,并对所述运行环境信息进行解析,得到第二标识信息;其中,所述第二标识信息包括发生异常的第二应用程序包标识和异常的Activity组件标识;
判断模块12,用于判断所述第二标识信息和所述第一标识信息是否匹配;
处理模块13,用于在所述判断模块12判断第二标识信息和所述第一标识信息匹配时,根据所述intent数据,重新启动所述目标Activity组件。
本发明实施例提供的终端,可以执行上述所示的方法实施例,其实现原理和技术效果类似,在此不再赘述。
图6为本发明实施例提供的终端实施例二的流程示意图。在上述实施例的基础上,进一步地,上述存储模块10,具体包括:获取单元101、第一判断单元102、第二判断单元103和保存单元104。
具体的,获取单元101,用于在启动所述目标Activity组件后,获取所述第一应用程序包标识和所述目标Activity组件的标识;
第一判断单元102,用于根据所述第一应用程序包标识判断所述目标Activity组件对应的应用程序是否为白名单应用;
第二判断单元103,用于在所述第一判断单元102所述目标Activity组件对应的应用程序为白名单应用时,从Activity栈中获取最顶层的Activity的标识,并判断所述最顶层的Activity的标识是否与所述目标Activity组件的标识匹配;
保存单元104,用于在所述第二判断单元103判断所述最顶层的Activity的标识与所述目标Activity组件的标识匹配时,确定所述目标Activity组件启动成功,并将所述第一标识信息和所述intent数据保存至数据库中。
进一步地,上述判断模块12,具体用于判断所述第二应用程序包标识是否与所述第一应用程序包标识相同,以及判断所述目标Activity组件的标识和所述异常的Activity组件标识是否相同,并在判断所述第二应用程序包标识与所述第一应用程序包标识相同、且所述目标Activity组件的标识和所述异常的Activity组件标识相同时,确定所述第二标识信息和所述第一标识信息匹配。
可选的,上述处理模块13,还用于在所述目标Activity组件正常退出时,删除数据库中所保存的所述目标Activity组件对应的intent数据和所述第一标识信息。
可选的,上述存储模块10,还可以用于保存所述目标Activity组件对应的应用程序的异常信息。
可选的,上述处理模块13,还可以用于在重新启动所述目标Activity组件时,向用户输出提示信息;所述提示信息用于提示用户正在重新加载页面。
本发明实施例提供的终端,可以执行上述所示的方法实施例,其实现原理和技术效果类似,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (8)
1.一种应用程序的故障恢复方法,其特征在于,包括:
在目标Activity组件启动成功后,保存所述目标Activity组件的第一标识信息和所述第一标识信息对应的intent数据;其中,所述第一标识信息包括所述目标Activity组件对应的第一应用程序包标识和所述目标Activity组件的标识;
若检测到所述目标Activity组件对应的应用程序发生异常,则获取当前的运行环境信息,并对所述运行环境信息进行解析,得到第二标识信息;其中,所述第二标识信息包括发生异常的第二应用程序包标识和异常的Activity组件标识;
判断所述第二标识信息和所述第一标识信息是否匹配;
若匹配,则根据所述intent数据,重新启动所述目标Activity组件;
所述在目标Activity组件启动成功后,保存所述目标Activity组件的第一标识信息和所述第一标识信息对应的intent数据,具体包括:
在启动所述目标Activity组件后,获取所述第一应用程序包标识和所述目标Activity组件的标识;
根据所述第一应用程序包标识判断所述目标Activity组件对应的应用程序是否为白名单应用;
若所述目标Activity组件对应的应用程序为白名单应用,则从Activity栈中获取最顶层的Activity的标识,并判断所述最顶层的Activity的标识是否与所述目标Activity组件的标识匹配;
若匹配,则确定所述目标Activity组件启动成功,并将所述第一标识信息和所述intent数据保存至数据库中。
2.根据权利要求1所述的方法,其特征在于,所述判断所述第二标识信息和所述第一标识信息是否匹配,具体包括:
判断所述第二应用程序包标识是否与所述第一应用程序包标识相同;
判断所述目标Activity组件的标识和所述异常的Activity组件标识是否相同;
若所述第二应用程序包标识与所述第一应用程序包标识相同、且所述目标Activity组件的标识和所述异常的Activity组件标识相同,则确定所述第二标识信息和所述第一标识信息匹配。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
若所述目标Activity组件正常退出,删除数据库中所保存的所述目标Activity组件的第一标识信息和所述第一标识信息对应的intent数据。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
保存所述目标Activity组件对应的应用程序的异常信息。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在重新启动所述目标Activity组件时,向用户输出提示信息;所述提示信息用于提示用户正在重新加载页面。
6.一种用于应用程序故障恢复的终端,其特征在于,包括:
存储模块,用于在目标Activity组件启动成功后,保存所述目标Activity组件的第一标识信息和所述第一标识信息对应的intent数据;其中,所述第一标识信息包括所述目标Activity组件对应的第一应用程序包标识和所述目标Activity组件的标识;
获取模块,用于在检测到所述目标Activity组件对应的应用程序发生异常时,获取当前的运行环境信息,并对所述运行环境信息进行解析,得到第二标识信息;其中,所述第二标识信息包括发生异常的第二应用程序包标识和异常的Activity组件标识;
判断模块,用于判断所述第二标识信息和所述第一标识信息是否匹配;
处理模块,用于在所述判断模块判断第二标识信息和所述第一标识信息匹配时,根据所述intent数据,重新启动所述目标Activity组件;
所述存储模块,具体包括:
获取单元,用于在启动所述目标Activity组件后,获取所述第一应用程序包标识和所述目标Activity组件的标识;
第一判断单元,用于根据所述第一应用程序包标识判断所述目标Activity组件对应的应用程序是否为白名单应用;
第二判断单元,用于在所述第一判断单元根据所述第一应用程序包标识判断所述目标Activity组件对应的应用程序为白名单应用时,从Activity栈中获取最顶层的Activity的标识,并判断所述最顶层的Activity的标识是否与所述目标Activity组件的标识匹配;
保存单元,用于在所述第二判断单元判断所述最顶层的Activity的标识与所述目标Activity组件的标识匹配时,确定所述目标Activity组件启动成功,并将所述第一标识信息和所述intent数据保存至数据库中。
7.根据权利要求6所述的终端,其特征在于,所述判断模块,具体用于判断所述第二应用程序包标识是否与所述第一应用程序包标识相同,以及判断所述目标Activity组件的标识和所述异常的Activity组件标识是否相同,并在判断所述第二应用程序包标识与所述第一应用程序包标识相同、且所述目标Activity组件的标识和所述异常的Activity组件标识相同时,确定所述第二标识信息和所述第一标识信息匹配。
8.根据权利要求6或7所述的终端,其特征在于,所述处理模块,还用于在所述目标Activity组件正常退出时,删除数据库中所保存的所述目标Activity组件的第一标识信息和所述第一标识信息对应的intent数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610528809.0A CN106201811B (zh) | 2016-07-06 | 2016-07-06 | 应用程序的故障恢复方法和终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610528809.0A CN106201811B (zh) | 2016-07-06 | 2016-07-06 | 应用程序的故障恢复方法和终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106201811A CN106201811A (zh) | 2016-12-07 |
CN106201811B true CN106201811B (zh) | 2019-03-26 |
Family
ID=57465500
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610528809.0A Active CN106201811B (zh) | 2016-07-06 | 2016-07-06 | 应用程序的故障恢复方法和终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106201811B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107179966B (zh) * | 2017-04-25 | 2020-01-31 | 中国联合网络通信集团有限公司 | 数据恢复方法及系统 |
CN110362416B (zh) * | 2018-03-26 | 2022-03-25 | 腾讯科技(深圳)有限公司 | 页面组件加载方法及装置、电子设备、存储介质 |
CN108846287A (zh) * | 2018-06-26 | 2018-11-20 | 北京奇安信科技有限公司 | 一种检测漏洞攻击的方法及装置 |
CN109240816B (zh) * | 2018-08-30 | 2020-11-10 | 世纪龙信息网络有限责任公司 | 系统方案切换方法、装置、计算机设备和存储介质 |
CN111026575B (zh) * | 2019-11-29 | 2024-04-02 | 北京奇艺世纪科技有限公司 | 一种异常处理方法、装置及电子设备 |
CN113515317A (zh) * | 2020-03-25 | 2021-10-19 | 华为技术有限公司 | 数据恢复的方法、装置 |
CN112099993B (zh) * | 2020-09-16 | 2023-06-30 | 福建天晴在线互动科技有限公司 | 一种程序异常退出后恢复现场的方法及其系统 |
CN112596946B (zh) * | 2020-12-10 | 2024-08-20 | 长沙市到家悠享网络科技有限公司 | 服务的运行状态控制方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102308285A (zh) * | 2011-07-26 | 2012-01-04 | 华为技术有限公司 | 一种应用程序的内存错误修复方法 |
CN105094922A (zh) * | 2015-08-17 | 2015-11-25 | 北京奇虎科技有限公司 | 应用程序免安装运行控制方法及其装置 |
CN105512045A (zh) * | 2015-12-24 | 2016-04-20 | 珠海市君天电子科技有限公司 | 一种应用程序的测试方法、装置及测试设备 |
CN105573833A (zh) * | 2015-12-14 | 2016-05-11 | 北京奇虎科技有限公司 | 处理客户端应用的方法、装置与移动终端 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3135714B2 (ja) * | 1992-10-29 | 2001-02-19 | 株式会社東芝 | チェックポイントリスタート方式 |
-
2016
- 2016-07-06 CN CN201610528809.0A patent/CN106201811B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102308285A (zh) * | 2011-07-26 | 2012-01-04 | 华为技术有限公司 | 一种应用程序的内存错误修复方法 |
CN105094922A (zh) * | 2015-08-17 | 2015-11-25 | 北京奇虎科技有限公司 | 应用程序免安装运行控制方法及其装置 |
CN105573833A (zh) * | 2015-12-14 | 2016-05-11 | 北京奇虎科技有限公司 | 处理客户端应用的方法、装置与移动终端 |
CN105512045A (zh) * | 2015-12-24 | 2016-04-20 | 珠海市君天电子科技有限公司 | 一种应用程序的测试方法、装置及测试设备 |
Also Published As
Publication number | Publication date |
---|---|
CN106201811A (zh) | 2016-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106201811B (zh) | 应用程序的故障恢复方法和终端 | |
EP3030966B1 (en) | Virtual computing instance migration | |
CN111459954A (zh) | 分布式数据同步方法、装置、设备及介质 | |
CN106485261B (zh) | 一种图像识别的方法和装置 | |
CN105512044B (zh) | 用于关键字驱动测试的对象库的更新方法及系统 | |
WO2019051948A1 (zh) | 监控数据的处理方法、设备、服务器及存储介质 | |
US11272012B2 (en) | Action processing associated with a cloud device | |
CN102087615A (zh) | 消息队列中逻辑关联的消息的自动合并 | |
US20090150869A1 (en) | System and method of monitoring dynamic scopes in synchronous and asynchronous calls | |
US11294740B2 (en) | Event to serverless function workflow instance mapping mechanism | |
CN109788068A (zh) | 心跳状态信息上报方法、装置和设备及计算机存储介质 | |
CN110740145A (zh) | 消息消费方法、装置、存储介质及电子设备 | |
CN109492181A (zh) | 页面跳转方法、装置、计算机设备和存储介质 | |
CN111026581A (zh) | 应用程序的修复方法及装置、系统、存储介质、电子装置 | |
CN109976823A (zh) | 一种应用程序启动方法、装置及终端设备 | |
CN109933465A (zh) | 异常处理方法、装置、服务器和存储介质 | |
CN109739665A (zh) | 接口管理方法、装置、服务器及存储介质 | |
CN110457132B (zh) | 一种功能对象的创建方法、装置和终端设备 | |
US9378230B1 (en) | Ensuring availability of data in a set being uncorrelated over time | |
CN108733466A (zh) | 重启分布式系统中的应用系统实例的方法、装置及设备 | |
CN107729128B (zh) | 应用程序数据恢复方法、装置、计算机设备和存储介质 | |
CN110245046B (zh) | 一种针对Android App无埋点的数据统计方法及装置 | |
CN105554134B (zh) | 信息同步方法及装置 | |
US10944587B2 (en) | Event processing associated with a smart device | |
CN110502238A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |