本申请涉及页面显示,尤其涉及一种页面状态恢复方法和系统。
背景技术:
1、移动端android、ios页面均为基于view的视图页面结构设计,操作系统在内存回收后重新渲染页面时将会进行ui重建,并且可以进行状态恢复,但由于webview在移动端基于独立进程渲染模式设计,且h5页面的状态属于webview黑盒机制设计,这就会导致操作系统提供的状态恢复机制不适用于webview的h5页面,因此,在移动端经常出现因为系统内存回收发生webview重建后,h5页面视觉状态无法恢复到重建前的视觉状态的问题。
技术实现思路
1、有鉴于此,本申请提供一种页面状态恢复方法和系统,可确保webview重建后,页面恢复到重建前的视觉状态和交互的接续。
2、具体地,本申请是通过如下技术方案实现的:
3、本申请第一方面提供一种页面状态恢复方法,所述方法应用于页面状态恢复系统,所述页面状态恢复系统包括客户端和h5页面,所述方法包括:
4、所述客户端在利用初始webview加载所述h5页面后,在所述初始webview被系统内存回收前,向所述h5页面发送通知消息;
5、所述h5页面在接收到所述通知消息后,在本地保存所述h5页面的javascript状态数据;
6、所述客户端在检测到因内存回收重建新的webview实例后,在利用所述新的webview实例加载所述h5页面时,向所述h5页面发送重建标记,以通过所述重建标记告知所述h5页面当前处于重建加载状态;
7、所述h5页面在利用所述新的webview实例加载所述h5页面于页面视图渲染前,若检测到存在重建标记,则从本地存储中读取所述h5页面的javascript状态数据,并使用所述javascript状态数据进行视图恢复渲染,以使得所述h5页面恢复到重建webview实例前的视觉状态。
8、本申请第二方面提供一种页面状态恢复系统,所述系统包括客户端和h5页面;其中,
9、所述客户端,用于在利用初始webview加载所述h5页面后,在所述初始webview被系统内存回收前,向所述h5页面发送通知消息;
10、所述h5页面,用于在接收到所述通知消息后,在本地保存所述h5页面的javascript状态数据;
11、所述客户端,还用于在检测到因内存回收重建新的webview实例后,在利用所述新的webview实例加载所述h5页面时,向所述h5页面发送重建标记,以通过所述重建标记告知所述h5页面当前处于重建加载状态;
12、所述h5页面,还用于在利用所述新的webview实例加载所述h5页面于页面视图渲染前,若检测到存在重建标记,则从本地存储中读取所述h5页面的javascript状态数据,并使用所述javascript状态数据进行视图恢复渲染,以使得所述h5页面恢复到重建webview实例前的视觉状态。
13、本申请提供的页面状态恢复方法和系统,在客户端利用初始webview加载所述h5页面后,在所述初始webview被系统内存回收前,向所述h5页面发送通知消息,并在h5页面接收到所述通知消息后,在本地保存所述h5页面的javascript状态数据,进而客户端在检测到因内存回收重建新的webview实例后,在利用所述新的webview实例加载所述h5页面时,向所述h5页面发送重建标记,以通过所述重建标记告知所述h5页面当前处于重建加载状态,最后,所述h5页面在利用所述新的webview实例加载所述h5页面于页面视图渲染前,若检测到存在重建标记,则从本地存储中读取所述h5页面的javascript状态数据,并使用所述javascript状态数据进行视图恢复渲染,以使得所述h5页面恢复到重建webview实例前的视觉状态。这样,通过在页面状态发生变化时选择性保存javascript状态数据,并在内存回收重新加载时添加一个重建标记,进而在操作系统发生webview内存回收并重建webview后,在检测到重建标记时,基于保存的javascript状态数据,恢复重建之前的视觉状态,避免因为操作系统发生内存回收,重建新的webview加载h5页面后,出现h5页面状态无法恢复的问题,确保了页面重建前后视觉状态的一致性。
1.一种页面状态恢复方法,其特征在于,所述页面状态恢复方法应用于页面状态恢复系统,所述页面状态恢复系统包括客户端和h5页面,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述向所述h5页面发送重建标记,包括:
4.根据权利要求1所述的方法,其特征在于,在所述初始webview被压栈或者被切换到后台时,所述初始webview被系统内存回收。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
6.一种页面状态恢复系统,其特征在于,所述系统包括客户端和h5页面;其中,
7.根据权利要求6所述的系统,其特征在于,所述h5页面,还用于在调用异步桥接操作执行异步任务之前,建立各个异步任务的回调函数的标识符与回调方法之间的对应关系;
8.根据权利要求6所述的系统,其特征在于,所述客户端,还用于通过所述h5页面的url或注册的javascript全局变量向所述h5页面发送重建标记。
9.根据权利要求6所述的系统,其特征在于,在所述初始webview被压栈或者被切换到后台时,所述初始webview被系统内存回收。
10.根据权利要求6所述的系统,其特征在于,所述客户端,还具体用于将各个异步任务的回调函数的标识符和执行结果之间的对应关系组装为webview丢失调用事件,并将所述webview丢失调用事件通知给所述h5页面;其中,webview在加载所述h5页面时,所述h5页面会注册webview丢失调用事件,以使得所述h5页面能够接收并响应来自所述客户端的webview丢失调用事件通知。
