数据恢复的方法、装置制造方法及图纸

技术编号:30402699 阅读:16 留言:0更新日期:2021-10-20 10:48
本申请提供一种数据恢复方法及装置,用于计算机技术领域。其中,该方法包括确定第一数据,所述第一数据为应用程序正常运行时的应用数据;将所述第一数据保存到句柄记录,所述句柄记录使用引用计数的机制进行管理;应用程序异常重启时,获取所述句柄记录,根据所述句柄记录将应用程序恢复到异常前的状态。通过该方法,将应用程序正常运行时应用数据持久化保存,在应用程序在异常重启后对应用程序进行恢复,使其状态和数据与异常重启前保持一致,提升用户体验。升用户体验。升用户体验。

【技术实现步骤摘要】
数据恢复的方法、装置


[0001]本申请实施例涉及计算机
,尤其是涉及数据恢复的方法。

技术介绍

[0002]Android操作系统因其开源性质已被广泛应用于手机、平板电脑、可穿戴设备等多种智能设备中。随着Android系统越来越普及,其应用数量连年增长,应用开发层出不穷。应用程序在运行过程中存在很多不确定性,比如应用程序运行时发生崩溃,被用户直接清理,或是被各类Android衍生系统进行不同程度的管控等。由于Android系统中的进程中使用到的内存易失性数据如Pend ingI ntent,I Binder等无法序列化进行持久化存储,从而导致应用程序在重启后不能恢复到出现异常前的状态,给Android应用开发者带来了极大的限制,也影响了用户的体验。
[0003]为解决这一问题,现有技术主要提供几种方案:
[0004]1)在系统层对当前运行的应用相关的信息进行解析提取,序列化得到字节流后存储在数据库中。但是这个方案需要对系统层代码进行修改,通用性不强。
[0005]2)对目标应用程序进行进程监控,将其运行异常时的堆栈信息存储于本地,在出现异常时根据保存的堆栈信息对状态进行恢复。但是由于堆栈信息一般是记录进程运行状态的相关信息,记录不了进程内的数据,因此恢复时仅能保证进程的恢复,不能保证应用内所有数据包括内存易失性数据的恢复。
[0006]3)提供一种父子进程间进行交互保活,定期向通过管道通信发送给主进程进行信息保活,保证在一方意外崩溃的情况下另一方能及时拉起并恢复其进程。但是这种方法只能解决一个进程终止后的恢复,无法在两个进程同时终止的情况下进行数据恢复。此方法还会增加通信成本,数据恢复成功率受通信成功率影响。
[0007]因此,如何恢复内存易失性数据,以达到Android应用出现异常重启后进程和应用数据能与出现异常前保持一致成为亟待解决的问题。

技术实现思路

[0008]本申请实施例提供一种数据恢复的方法和装置,应用于计算机
,解决如下问题:
[0009]Android应用程序出现异常重启情况下能够进行数据恢复,以提高Android应用程序的可靠性及提升用户体验。
[0010]第一方面,本申请实施例提供一种数据恢复的方法,该方法包括:确定第一数据,所述第一数据为应用程序正常运行时的应用数据;将所述第一数据保存到句柄记录,所述句柄记录使用引用计数的机制进行管理;应用程序异常重启时,获取所述句柄记录,根据所述句柄记录将应用程序恢复到异常前的状态。
[0011]具体的,所述第一数据可以由应用开发者定义,第一数据可以是内存易失性数据,也可以是其他应用开发者认为需要保存的数据。应用程序异常重启时,这些数据可以用于
生成将应用程序恢复到异常前状态所需的数据。所述第一数据被保存到句柄记录后通过引用计数的方式进行管理,在这种情况下,只要句柄记录被引用就不会被系统释放,从而能够持久化保存第一数据。在应用程序异常重启后,可以根据保存的第一数据对应用程序进行恢复,使其进程和应用数据恢复到与异常重启前一致的状态。
[0012]此方法相比现有技术,流程简单,无需修改系统层代码,对保存的数据类型没有限制,不限于堆栈数据,不必新增保活进程,减少了通信成本。通过该方法,将应用程序正常运行时应用数据持久化保存,在应用程序在异常重启后对应用程序进行恢复,使其状态和数据与异常重启前保持一致,提升用户体验。
[0013]在一种可能的实现方式中,所述第一数据为无法通过序列化保存到外部存储设备的内存易失性数据。
[0014]具体的,所述内存易失性数据可以是待触发意图的上下文数据、远程对象接口数据、文件描述符等数据。
[0015]在一种可能的实现方式中,所述句柄记录使用引用计数的机制进行管理包括通过第一系统接口引用所述句柄记录。
[0016]在一种可能的实现方式中,所述句柄记录通过第一系统接口引用的方式可以是对所述句柄记录设置定时任务,所述定时任务包括一次性任务或者周期性任务。
[0017]具体的,所述第一系统接口可以是系统组件中的闹钟管理器Al armManager,通过闹钟管理器Al armManager设置一个超长闹钟,目的在于该定时任务不会被触发,或者设置一个周期性闹钟,从而保证句柄记录一直被引用,不会被释放。可以理解的是,系统组件中的任务调度器JobSchedu ler也可以实现与闹钟管理器Al armManager相同的功能。
[0018]在一种可能的实现方式中,所述句柄记录通过第一系统接口引用的方式可以是对所述句柄记录设置触发条件。
[0019]具体的,所述第一系统接口可以是系统组件中的任务调度器JobSchedu ler。任务调度器JobSchedu ler可以通过设置触发条件,比如低电量、终端设备接入网络等来触发任务的执行。在本申请实施例中,可以通过设置一些无法触发的条件来持有句柄记录,比如超长时间&断网&睡眠。
[0020]在一种可能的实现方式中,所述句柄记录通过第一系统接口引用的方式也可以是对所述句柄记录设置通知任务,所述通知任务包括常驻通知或非常驻通知。
[0021]具体的,所述第一系统接口可以是系统组件中的通知管理器Not ificat ionManager,通过通知管理器Not ificat ionManager设置通知任务。设置了通知任务后将在状态栏上显示一条信息。常驻通知是指进行通知栏操作后,通知不会消失;非常驻通知是指点击通知后通知会自动消失。可以理解的是,常驻通知的方式可以实现长期持有句柄记录的效果,非常驻通知的方式在点击通知事件发生之后句柄记录可能会被释放。
[0022]具体的,上述句柄记录可以是系统中的待触发意图对象。可以理解的是,句柄记录也可以是系统中的其他可以被引用的资源,本申请不做限制。
[0023]需要说明的是,本申请实施例也可以根据其他方法对句柄记录进行引用,本申请不做限制。
[0024]通过第一系统接口对句柄记录进行引用,可以使得句柄记录不会被系统释放,从而达到持久性保存内存易失性数据的目的。
[0025]在一种可能的实现方式中,所述第一数据在保存过程中被保存成句柄记录包括将所述第一数据进行分层分桶存储。
[0026]具体的,在保存第一数据的过程中,将通过第二系统接口将所述第一数据进行分层分桶存储。每个桶的容量是固定的,在存储过程中若一个桶存满了,则再生成一个新的桶。每次有第一数据要进行新增存储时,先依次遍历当前已存在的所有桶是否有足够的空间存储新增的第一数据,如果有,则将第一数据存储到有空间的桶中,否则,创建一个新的桶,再将新增的第一数据存入此新增的桶中。
[0027]通过分桶的方式进行存储,一方面能充分利用存储空间,另一方面,由于应用程序在运行过程中应用数据会发生变化,需要对已存储的数据进行更新,在更新数据时,只需要找到待更新数据所在的桶,并更新相应数据即可,无需更新所有数据,减少本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据恢复的方法,其特征在于,包括:确定第一数据,所述第一数据为应用程序正常运行时的应用数据;将所述第一数据保存到句柄记录,所述句柄记录使用引用计数的机制进行管理;应用程序异常重启时,获取所述句柄记录,根据所述句柄记录将应用程序恢复到异常前的状态。2.根据权利要求1所述的方法,其特征在于,所述第一数据为无法通过序列化保存到外部存储设备的内存易失性数据。3.根据权利要求1所述的方法,其特征在于,所述句柄记录使用引用计数的机制进行管理包括:通过第一系统接口引用所述句柄记录。4.根据权利要求3所述的方法,其特征在于,所述通过第一系统接口引用句柄记录包括:对所述句柄记录设置定时任务,所述定时任务包括一次性任务或者周期性任务;或者对所述句柄记录设置触发条件;或者对所述句柄记录设置通知任务,所述通知任务包括常驻通知或非常驻通知。5.根据权利要求1所述的方法,其特征在于,所述将第一数据保存到句柄记录包括:将所述第一数据进行分层分桶存储。6.根据权利要求5所述的方法,其特征在于,所述将所述第一数据进行分层分桶存储包括:建立分桶映射表,所述分桶映射表包括至少一个关键字和至少一个分桶寻址的对应关系,其中,所述关键字为一条所述第一数据的唯一标识,所述分桶寻址为指向所述一条所述第一数据存储位置的变量,所述分桶映射表用于数据更新或删除时根据所述关键字找到所述一条所述第一数据在分桶中的存储位置。7.根据权利要求6所述的方法,其特征在于,所述分桶寻址包括:分桶的编号;或者分桶的编号和桶内键值的组合;所述分桶编号为分配给一条所述第一数据的一个分桶的编号,所述桶内键值为一条所述第一数据在一个分桶内的位置。8.根据权利要求5-7中任意一项所述的方法,其特征在于,所述通过第一系统接口引用所述句柄记录包括:通过第一系统接口引用分层分桶存储的所述第一数据的最顶层。9.根据权利要求6-8中任意一项所述的方法,其特征在于,所述方法还包括:应用程序正常运行时,根据分桶映射表更新或删除所述第一数据,以使得所述第一数据与应用程序运行的最新状态的应用数据保持一致。10.根据权利要求1所述的方法,其特征在于,所述应用程序异常重启时,获取所述句柄记录,根据所述句柄记录将应用程序恢复到异常前的状态包括:通过第二系统接口根据应用标识获取所述应用程序的句柄记录,所述应用标识为标识所述应用程序的唯一标识;解析所述句柄记录并将所述句柄记录中的数据恢复到所述应用程序。
11.一种数据恢复的装置,其特征在于,包括确定模块、保存模块和恢复模块:所述确定模块用于:确定第一数据,所述第一数据为应用程序正常运行时的应用数据;所述保存模块用于:将所述第一数据保存到句柄记录,所述句柄记录使用引用计数的机制进行管理;所述恢复模块用于:应用程序异常重启时,获...

【专利技术属性】
技术研发人员:周逸徉巢晖汪洋林杰辉
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1