一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

页面数据加载方法、电子设备、存储介质及程序产品与流程

2022-08-17 11:33:09 来源:中国专利 TAG:


1.本发明实施例涉及一种页面数据加载方法、电子设备、存储介质及程序产品。


背景技术:

2.activity是一个应用程序组件,提供一个屏幕,用户可以用来交互。activity中所有操作都与用户密切相关,是一个负责与用户交互的组件。在一个android应用中,一个activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。一个页面对应一个activity。要打开某个页面,首先启动页面的activity,activity启动完成后,请求接口数据,刷新页面显示接口数据。
3.图2是现有技术中页面加载过程示意图。如图2所示,现有常规的页面加载流程如下:
4.1.用户在当前页面(activity1)点击button(按钮),执行startactivity()方法启动新页面(activity2)。
5.2.activity2启动结束,然后oncreate()被调用。
6.3.在oncreate()中开启异步线程并通过网络下载接口数据。
7.4.网络接口数据下载完成并更新页面,显示加载完成的数据。
8.如上述流程所示,目前大部分app是在activity页面创建后(页面启动完成后),即activity启动结束、oncreate方法执行后才开始异步加载网络数据,数据加载完成后再刷新页面。该方案是一种常规方案,无预加载,所以页面加载速度最慢。
9.为提高页面加载速度,现有技术提出了采用数据缓存的解决方法。该方法在第一次进入页面后将数据进行缓存,后续再次进入该页面时使用该缓存即可。该方案无法解决第一次进入页面加载速度慢的问题。


技术实现要素:

10.为解决现有技术中的问题,本发明实施例提供一种页面数据加载方法、电子设备、存储介质及程序产品。
11.本发明实施例提供一种页面数据加载方法,包括:响应于获取到从当前的第一页面跳转到第二页面的触发操作,在利用第一线程对所述第二页面启动结束之前,开启第二线程下载所述第二页面的接口数据,并将所述接口数据存储于预设存储区域;在所述第二页面启动结束之后,从所述预设存储区域中读取所述接口数据,根据所述接口数据刷新所述第二页面。
12.根据本发明实施例提供的一种页面数据加载方法,所述响应于获取到从当前的第一页面跳转到第二页面的触发操作,在利用第一线程对所述第二页面启动结束之前,开启第二线程下载所述第二页面的接口数据,包括:响应于获取到所述第一页面中预设控件的点击事件,开启所述第二线程下载所述第二页面的所述接口数据;其中,所述预设控件的点击事件用于触发利用所述第一线程对所述第二页面进行启动,所述点击事件包括按下事件
及随后的松开事件。
13.根据本发明实施例提供的一种页面数据加载方法,所述响应于获取到从当前的第一页面跳转到第二页面的触发操作,在利用第一线程对所述第二页面启动结束之前,开启第二线程下载所述第二页面的接口数据,包括:响应于获取到所述第一页面中预设控件的按下事件,判断所述预设控件是否处于可滑动列表中;响应于所述预设控件未处于可滑动列表中,开启所述第二线程下载所述第二页面的所述接口数据;响应于所述预设控件处于可滑动列表中,则监听所述按下事件随后的松开事件,响应于监听到所述按下事件随后的所述松开事件,开启所述第二线程下载所述第二页面的所述接口数据;其中,所述预设控件的点击事件用于触发利用所述第一线程对所述第二页面进行启动,所述点击事件包括所述按下事件及随后的所述松开事件。
14.根据本发明实施例提供的一种页面数据加载方法,所述从所述预设存储区域中读取所述接口数据,包括:响应于所述接口数据下载完成,从所述预设存储区域中直接读取所述接口数据;响应于所述接口数据尚未下载完成,等待所述接口数据下载完成后,从所述预设存储区域中读取所述接口数据。
15.根据本发明实施例提供的一种页面数据加载方法,所述将所述接口数据存储于预设存储区域,包括:将所述接口数据存储于所述预设存储区域,并与所述接口数据的识别标识对应存储;所述从所述预设存储区域中读取所述接口数据,包括:根据所述识别标识从所述预设存储区域中读取所述接口数据。
16.根据本发明实施例提供的一种页面数据加载方法,所述开启第二线程下载所述第二页面的接口数据,并将所述接口数据存储于预设存储区域包括:响应于所述第二页面的接口数据尚未下载完,所述接口数据的识别标识对应的状态标识设置为第一状态;响应于所述第二页面的接口数据下载完成,所述接口数据的识别标识对应的状态标识设置为第二状态;所述响应于所述接口数据尚未下载完成,等待所述接口数据下载完成后,从所述预设存储区域中读取所述接口数据,包括:响应于所述状态标识设置为第一状态,阻塞从所述预设存储区域中读取所述接口数据的方法执行;响应于所述状态标识在等待有效期内变更为第二状态,唤醒所述从所述预设存储区域中读取所述接口数据的方法执行,根据所述接口数据的识别标识从所述预设存储区域中读取对应的所述接口数据。
17.根据本发明实施例提供的一种页面数据加载方法,所述将所述接口数据存储于预设存储区域,包括:将所述接口数据存储于缓存中;所述方法还包括:在设置的缓存有效期后将所述接口数据从所述缓存中删除。
18.本发明还提供一种页面数据加载装置,包括:预加载模块,用于:响应于获取到从当前的第一页面跳转到第二页面的触发操作,在利用第一线程对所述第二页面启动结束之前,开启第二线程下载所述第二页面的接口数据,并将所述接口数据存储于预设存储区域;页面展示模块,用于:在所述第二页面启动结束之后,从所述预设存储区域中读取所述接口数据,根据所述接口数据刷新所述第二页面。
19.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述页面数据加载方法的步骤。
20.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算
机程序被处理器执行时实现如上述任一种所述页面数据加载方法的步骤。
21.本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述页面数据加载方法的步骤。
22.本发明提供的页面数据加载方法、电子设备、存储介质及程序产品,通过响应于获取到从当前的第一页面跳转到第二页面的触发操作,在利用第一线程对第二页面启动结束之前,开启第二线程下载第二页面的接口数据,并将接口数据存储于预设存储区域,在第二页面启动结束之后,从预设存储区域中读取接口数据,根据接口数据刷新第二页面,实现了接口数据的预加载,大大缩短了页面从启动到显示的总时间,提高了页面加载速度,且具备通用性。
附图说明
23.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
24.图1是本发明实施例提供的页面数据加载方法流程示意图之一;
25.图2是现有技术中页面加载过程示意图;
26.图3是本发明实施例提供的页面数据加载方法流程示意图之二;
27.图4是本发明实施例提供的页面数据加载装置的结构示意图;
28.图5是本发明提供的电子设备的结构示意图。
具体实施方式
29.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
30.本发明实施例提供的页面数据加载方法、电子设备、存储介质及程序产品,可以适用于任何需要通过网络接口获取数据进行页面显示的设备,如各种智能设备等。
31.图1是本发明实施例提供的页面数据加载方法流程示意图之一。如图1所示,所述方法包括:
32.步骤101、响应于获取到从当前的第一页面跳转到第二页面的触发操作,在利用第一线程对所述第二页面启动结束之前,开启第二线程下载所述第二页面的接口数据,并将所述接口数据存储于预设存储区域。
33.现有无预加载的方案中,若从第一页面跳转到第二页面,需要在第二页面启动完成后(页面acitivty启动完成)才开始下载第二页面的接口数据。而页面的启动过程是需要一定时间的,这个时间可以称之为等待期。在等待期android系统要为页面acitivty的创建做大量的准备工作,包括任务栈的管理、数据有效性检查以及activity的生命周期管理等。这个等待期根据设备性能的不同会有差异,一般是在100ms~200ms之间。
34.为充分利用页面启动的时间,本发明实施例提供的页面数据加载方法,在确定将
要(并不一定立刻)执行从第一页面跳转到第二页面的动作时,也即获取到从当前的第一页面跳转到第二页面的触发操作时,在利用第一线程对第二页面启动结束之前,开启第二线程下载第二页面的接口数据,并将接口数据存储于预设存储区域。页面的启动和接口数据的下载分别在不同的线程执行,也即在第二页面启动结束之前即开始下载待跳转的第二页面的接口数据,实现了页面数据的预加载。
35.另外,本发明实施例提供的页面数据加载方法,只要获取到从当前的第一页面跳转到第二页面的触发操作,即可以开启第二线程下载第二页面的接口数据,可以适用于各种页面,并适用于任何时间打开页面的场景,具备通用性。
36.步骤102、在所述第二页面启动结束之后,从所述预设存储区域中读取所述接口数据,根据所述接口数据刷新所述第二页面。
37.在第二页面启动结束之后,页面无需再请求网络接口下载数据,可以从预设存储区域中读取已下载的接口数据,并刷新第二页面进行显示。
38.本发明实施例提供的页面数据加载方法,通过响应于获取到从当前的第一页面跳转到第二页面的触发操作,在利用第一线程对第二页面启动结束之前,开启第二线程下载第二页面的接口数据,并将接口数据存储于预设存储区域,在第二页面启动结束之后,从预设存储区域中读取接口数据,根据接口数据刷新第二页面,实现了接口数据的预加载,大大缩短了页面从启动到显示的总时间,提高了页面加载速度,且具备通用性。
39.根据本发明实施例提供的一种页面数据加载方法,响应于获取到从当前的第一页面跳转到第二页面的触发操作,在利用第一线程对第二页面启动结束之前,开启第二线程下载第二页面的接口数据,包括:响应于获取到第一页面中预设控件的点击事件,开启第二线程下载第二页面的接口数据;其中,预设控件的点击事件用于触发利用第一线程对第二页面进行启动,点击事件包括按下事件及随后的松开事件。
40.可以在利用第一线程对第二页面开始启动的同时,开启第二线程下载第二页面的接口数据。其中,第一线程对第二页面的启动可以由第一页面中预设控件的点击事件触发。其中,点击事件包括按下事件及随后的松开事件,即先按下,后松开。而触发第一线程对第二页面的启动则可以确定将要从第一页面跳转到第二页面,因此,若获取到第一页面中预设控件的点击事件,则获取到从当前的第一页面跳转到第二页面的触发操作。
41.因此,在响应于获取到从当前的第一页面跳转到第二页面的触发操作,在利用第一线程对第二页面启动结束之前,开启第二线程下载第二页面的接口数据时,响应于获取到第一页面中预设控件的点击事件,开启第二线程下载第二页面的接口数据;其中,预设控件的点击事件用于触发利用第一线程对第二页面进行启动,点击事件包括按下事件及随后的松开事件。
42.本发明实施例提供的页面数据加载方法,通过在获取到第一页面中预设控件的点击事件,开启第二线程下载第二页面的接口数据,实现了在第二页面启动的同时即下载第二页面的接口数据,可有效提高页面加载速度。
43.根据本发明实施例提供的一种页面数据加载方法,所述响应于获取到从当前的第一页面跳转到第二页面的触发操作,在利用第一线程对所述第二页面启动结束之前,开启第二线程下载所述第二页面的接口数据,包括:响应于获取到所述第一页面中预设控件的按下事件,判断所述预设控件是否处于可滑动列表中;响应于所述预设控件未处于可滑动
列表中,开启所述第二线程下载所述第二页面的所述接口数据;响应于所述预设控件处于可滑动列表中,则监听所述按下事件随后的松开事件,响应于监听到所述按下事件随后的所述松开事件,开启所述第二线程下载所述第二页面的所述接口数据;其中,所述预设控件的点击事件用于触发利用所述第一线程对所述第二页面进行启动,所述点击事件包括所述按下事件及随后的所述松开事件。
44.第一页面中预设控件的点击事件将触发利用第一线程对第二页面进行启动,点击事件包括按下事件和随后的松开事件,即对预设控件先按下后松开,形成对预设控件的点击操作。如果在预设控件按下时(即检测到预设控件的按下事件,但尚未检测到预设控件的松开事件),就开启第二线程下载第二页面的接口数据,则可以将第二页面的接口数据的下载进一步提前,有利于进一步提高页面加载速度。
45.但进行第二页面的接口数据的下载需要确定将要从第一页面跳转到第二页面,也即需要获取到从当前的第一页面跳转到第二页面的触发操作才行。而按下预设控件除了可能会进一步产生预设控件的点击事件外,还可能产生预设控件的滑动事件。预设控件比如可以是按钮,也即按下按钮的动作并不能确信将要产生对于按钮的点击,还可能是对按钮的滑动。对预设控件的滑动可能带来页面的滑动,实现对于页面的滑动操作,而并非打开新页面。页面中可以实现滑动功能的控件放置于可滑动列表中。因此通过判断预设控件是否处于可滑动列表中,可以判断预设控件是否可能带来页面的滑动。如果预设控件没有处于可滑动列表中,则预设控件不可能带来页面的滑动,也表示对于预设控件不会设置滑动事件,则表示预设控件按下后只能进一步触发点击事件的发生。确信点击事件即将发生也即确信将要从第一页面跳转到第二页面,也即获取到从当前的第一页面跳转到第二页面的触发操作,可以开启第二线程下载第二页面的接口数据,实现在第二页面启动开始之前即开始下载第二页面的接口数据。
46.需要注意的,预设控件未处于滑动列表中,只是表示预设控件不会带来页面的滑动,不代表页面一定不会滑动。
47.因此,在响应于获取到从当前的第一页面跳转到第二页面的触发操作,在利用第一线程对第二页面启动结束之前,开启第二线程下载第二页面的接口数据时,响应于获取到第一页面中预设控件的按下事件,判断预设控件是否处于可滑动列表中,若预设控件未处于可滑动列表中,开启第二线程下载第二页面的接口数据,其中,预设控件的点击事件用于触发利用第一线程对第二页面进行启动,点击事件包括按下事件及随后的松开事件。
48.若判断得知预设控件处于可滑动列表中,则监听按下事件随后的松开事件,响应于监听到按下事件随后的松开事件,开启第二线程下载第二页面的接口数据,实现页面数据预加载。若未监听到按下事件随后的松开事件,则不进行页面数据预加载。
49.本发明实施例提供的页面数据加载方法,通过响应于获取到第一页面中预设控件的按下事件,判断预设控件是否处于可滑动列表中,响应于预设控件未处于可滑动列表中,开启第二线程下载第二页面的接口数据;响应于预设控件处于可滑动列表中,则监听按下事件随后的松开事件,响应于监听到按下事件随后的松开事件,开启第二线程下载第二页面的所述接口数据,实现了在第二页面启动之前即开始下载第二页面的接口数据,进一步提高了页面加载速度。
50.根据本发明实施例提供的一种页面数据加载方法,所述从所述预设存储区域中读
取所述接口数据,包括:响应于所述接口数据下载完成,从所述预设存储区域中直接读取所述接口数据;响应于所述接口数据尚未下载完成,等待所述接口数据下载完成后,从所述预设存储区域中读取所述接口数据。
51.从预设存储区域中读取接口数据的方法是可阻塞的,即从预设存储区域中读取数据时,若对应的接口数据已下载完成,则从预设存储区域中直接读取接口数据;若对应的接口数据尚未下载完成,则等待接口数据下载完成后,从预设存储区域中读取接口数据。
52.本发明实施例提供的页面数据加载方法,通过响应于接口数据下载完成,从预设存储区域中直接读取接口数据,响应于接口数据尚未下载完成,等待接口数据下载完成后,从预设存储区域中读取接口数据,通过可阻塞的方法实现接口数据的读取,在保证页面加载速度的基础上,进一步保证了接口数据的可靠获取。
53.根据本发明实施例提供的一种页面数据加载方法,所述将所述接口数据存储于预设存储区域,包括:将所述接口数据存储于所述预设存储区域,并与所述接口数据的识别标识对应存储;所述从所述预设存储区域中读取所述接口数据,包括:根据所述识别标识从所述预设存储区域中读取所述接口数据。
54.预设存储区域中可能存储多个页面的接口数据。比如,在第一页面上连续点击了两个按钮,则这两个按钮分别对应的跳转页面将依次启动,接口数据也将在下载完成后分别保存到预设存储区域。为实现接口数据的区分,便于页面准确获取对应的接口数据,预设存储区域在存储接口数据时,可以将接口数据和接口数据的识别标识对应存储。则在从预设存储区域中读取接口数据时,根据识别标识从预设存储区域中读取接口数据。
55.预设存储区域内部可以通过一个map(一种数据结构)来维护接口数据的存储,并将接口数据以键值对(key-value)的形式进行存储。其中,key表示接口数据的识别标识,可以取为接口数据的获取地址。value表示具体的接口数据。
56.本发明实施例提供的页面数据加载方法,通过将接口数据存储于预设存储区域,并与接口数据的识别标识对应存储,实现了不同接口数据的区分,便利了接口数据的准确获取。
57.根据本发明实施例提供的一种页面数据加载方法,所述开启第二线程下载所述第二页面的接口数据,并将所述接口数据存储于预设存储区域包括:响应于所述第二页面的接口数据尚未下载完,所述接口数据的识别标识对应的状态标识设置为第一状态;响应于所述第二页面的接口数据下载完成,所述接口数据的识别标识对应的状态标识设置为第二状态;所述响应于所述接口数据尚未下载完成,等待所述接口数据下载完成后,从所述预设存储区域中读取所述接口数据,包括:响应于所述状态标识设置为第一状态,阻塞从所述预设存储区域中读取所述接口数据的方法执行;响应于所述状态标识在等待有效期内变更为第二状态,唤醒所述从所述预设存储区域中读取所述接口数据的方法执行,根据所述接口数据的识别标识从所述预设存储区域中读取对应的所述接口数据。
58.利用第二线程下载第二页面的接口数据是需要时间的,可以设置与接口数据的识别标识对应的状态标识来标识接口数据的下载进度。在开启第二线程下载第二页面的接口数据,并将接口数据存储于预设存储区域时,响应于第二页面的接口数据尚未下载完,将接口数据的识别标识对应的状态标识设置为第一状态;响应于第二页面的接口数据下载完成,将接口数据的识别标识对应的状态标识设置为第二状态。
59.从预设存储区域中读取接口数据的方法是可阻塞的,即从预设存储区域中读取数据时,若对应的接口数据已下载完成,则从预设存储区域中直接读取接口数据;若对应的接口数据尚未下载完成,则等待接口数据下载完成后,从预设存储区域中读取接口数据。
60.在响应于接口数据尚未下载完成,等待接口数据下载完成后,从预设存储区域中读取接口数据时,响应于状态标识设置为第一状态,表示接口数据尚未下载完成,则阻塞从预设存储区域中读取接口数据的方法执行;响应于状态标识在等待有效期内变更为第二状态,表示接口数据已下载完成,则唤醒从预设存储区域中读取接口数据的方法执行,根据接口数据的识别标识从预设存储区域中读取对应的接口数据。响应于状态标识在等待有效期内未变更为第二状态,则可以返回空值。
61.等待有效期为设置的等待状态标识从第一状态到第二状态的最大等待时长。
62.比如,预设存储区域的接口数据的管理上,可以提供三个主要的接口方法:
63.1)prepare(string key);
64.2)put(string key,t value);
65.3)get(string key)
66.其中prepare方法和put方法为非阻塞方法,get方法为可阻塞方法。
67.以预设控件为按钮为例,当用户点击按钮(button)启动新页面的同时,会开启一个新线程,并在该线程中开始执行预加载逻辑,下载新页面的接口数据。预加载的第1步是先调用prepare方法,并传入参数key。key是该接口数据唯一标识(接口数据的识别标识),可以用要预加载网络接口的url作为key。prepare方法只传入了key,而没有传value(具体的接口数据),是因为该方法仅是用来通知预设缓存区域的管理模块已开始准备缓存数据了,先在预设缓存区域中做个登记。此时该key所对应的状态为“prepare-准备中”(第一状态);当接口数据准备完成后会调用预设缓存区域的管理模块的put(string key,t value)方法以完成接口数据的添加。此时接口数据的状态变为“ready-就绪”(第二状态)。
68.页面数据预加载的同时,新页面(activity2)也处于启动过程中,当启动完成后,会在oncreate方法中开启一个工作线程用于从预设缓存区域中利用get方法根据key获取对应的接口数据。此时分为两种情况:
69.1)当key所对应的接口数据处于“ready-就绪”状态(第二状态)时,get方法将直接返回对应的接口数据,同时调用主线程立即通知ui刷新页面。
70.2)当key所对应的缓存数据处于“prepare-准备中”状态(第一状态)时,get方法所在线程将阻塞等待(通过调用wait(long timeout))。可以设置等待有效期,等待有效期的时长可自定义,一般可以设置为2-3秒,当在等待有效期内接口数据状态变为“ready-就绪”状态(第二状态)时,会通过调用notify()来唤醒对应的get方法所在线程。get方法此时获取到相应的接口数据并返回,最后通知ui刷新页面。
71.本发明实施例提供的页面数据加载方法,通过响应于接口数据下载完成,从预设存储区域中直接读取接口数据,响应于接口数据尚未下载完成,等待接口数据下载完成后,从预设存储区域中读取接口数据,通过可阻塞的方法实现接口数据的读取,在保证页面加载速度的基础上,进一步保证了接口数据的可靠获取。
72.根据本发明实施例提供的一种页面数据加载方法,所述将所述接口数据存储于预设存储区域,包括:将所述接口数据存储于缓存中;所述方法还包括:在设置的缓存有效期
后将所述接口数据从所述缓存中删除。
73.预设存储区域可以是缓存。并且,在缓存中可以设置缓存有效期,缓存有效期从接口数据存储入缓存之时开始计算,在达到缓存有效期后将接口数据从缓存中删除。可以对各个接口数据分别设置不同的缓存有效期。
74.当缓存的有效期在prepare方法调用时进行设置,会有一个map专门用来保存各个接口数据的缓存有效期,缓存有效期可以根据实际情况自行设置,默认值为当前时间 3秒,即该接口数据缓存3秒即过期。过期的缓存会直接被直接从缓存中移除掉。
75.设计缓存有效期的目的是为了保证数据的实时性。因为预加载的接口数据缓存一定会在短时间被新页面所取出并使用。如果预加载的接口数据在缓存中准备好却一直没有被使用,则说明可能对按下(ontouch)事件作了错误的判断,即执行按下操作(action_down)但没有触发点击(onclick)事件,这种情况也应该移除掉预加载数据。
76.可以实现有时限阻塞缓存。“有时限”指的是所有被添加(put)到该缓存中的数据都会有其对应的缓存有效期,当超过该缓存有效期后,数据将失效并被移除。“阻塞”指的是当从该缓存中获取(get)相应缓存数据时,如果该数据处于正在准备但未准备好的状态时,则当前获取方法将会阻塞以等待数据准备完成,当数据准备好后会立即获取到对应缓存数据并返回结果;而当超过一定等待时间(等待有效期)仍无法获取到数据时,则认为获取缓存数据失败,get()方法返回空值(null)。等待有效期可以设置为大于或等于缓存有效期。
77.本发明实施例提供的页面数据加载方法,通过将接口数据存储于缓存中,并在设置的缓存有效期后将接口数据从缓存中删除,保证了数据的及时性,节省了存储空间。
78.图3是本发明实施例提供的页面数据加载方法流程示意图之二。如图3所示,首先用户在当前页面(activity1)点击按钮启动新页面(activity2),在activity2启动的同时,会开启一个异步线程并开始下载新页面的接口数据,并存储到缓存中。此时,接口数据的下载和activity2的启动是在各自的线程中分别同时进行的。当activity2启动完成后根据接口数据的下载进度可以分为2种情况:
79.1)activity2启动完成且接口数据已经下载完成并写入到缓存。
80.2)activity2启动完成但接口数据此时未下载完成,未写入缓存。
81.对于情况1,页面将直接从缓存中读取到准备好的接口数据,并刷新页面。由于页面无需再请求网络接口,所以页面加载速度非常快,和打开一个纯本地页面一样。
82.对于情况2,页面仍会从缓存中读取数据,由于缓存处于正在准备的状态,所以页面会在一个工作线程中阻塞并等待缓存数据下载完成,待下载完成后当前线程会立即获得数据并刷新页面。这种情况的加载速度也比无预加载要快,因为当页面开始等待的时候,接口数据实际上已经下载了一部分了,只需等待剩余接口数据下载完成即可。
83.下面以预设控件为按钮为例对本发明实施例提供的页面数据加载方法在两种预加载时机下的效果进行评估:
84.1.由点击事件触发预加载的理论效果评估:
85.此种预加载时机是在用户点击跳转页面的按钮(button)时,通过按钮的onclicklistener来监听用户的点击动作,当onclick方法回调时(监听到按钮的点击事件),则开始执行预加载逻辑。该预加载时机有一定的提前量,且不会出现错误预加载的情况,即不会出现做了预加载但没有启动新页面的情况。该方案适用于几乎所有场景。
86.设从button onclick(监听到按钮的点击事件)到activity2oncreate执行(页面启动完成、开始调动oncreate方法)所需时间为t1(一般为100~200ms),网络接口数据下载所需的时间为t2(一般为100~300ms),数据刷新ui界面的时间很短,可忽略不计。则:
87.无预加载启动页面到数据展示的总耗时t≈t1 t2。
88.而使用了本预加载方案启动页面到数据展示的耗时为:
89.t≈t1(当t2《=t1时)
ꢀꢀ
(1)
90.t≈t2(当t2》=t1时)
ꢀꢀꢀ
(2)
91.根据t1、t2的实际情况,(1)式有很高几率满足,即当页面activity oncreate执行完成后(页面启动完成后)直接就可以拿到接口数据展示,不需要再异步请求网络接口了。该方案基本实现了页面的秒开。
92.2.在按钮未处于可滑动列表中时,由按下事件触发预加载的理论效果评估:
93.此种预加载时机是在用户点击跳转页面的button的时候,通过监听button的ontouchlistener来触发预加载。当outouch方法回调时,且该触摸事件为action_down(按下)时,若按钮未处于可滑动列表,则执行预加载逻辑。这个方案可以将预加载的时机进一步提前。button的一次点击事件实际上是由一次action_down事件加上一次action_up事件组成。在用户按下按钮(action_down)到抬手(action_up)的时间通常为200~500ms不等,这根据用户的点击习惯而有所不同(有的人点击的快、有的点击的慢)。但该方案需要有一个前提条件,button不能处于一个可滑动的列表中,即button不会导致当前页面滑动。如果button处于一个可滑动的列表中,ontouch方法的action_down事件不一定就表示点击按钮,而很可能是用户的一次滑动事件。而button未处于可滑动的列表中时,button的action_down事件可以大概率认为是用户的一次点击,可以执行预加载逻辑。
94.设从action_down到action_up的所需时间为t3(一般为200~400ms),设从button onclick(监听到按钮的点击事件)到activity2 oncreate执行(页面启动完成、开始调动oncreate方法)所需时间为t1(一般为100~200ms),网络接口数据下载所需的时间为t2(一般为100~300ms),数据刷新ui界面的时间很短,可忽略不计。
95.无预加载启动页面到数据展示的总耗时t≈t1 t2。
96.而使用了本预加载方案启动页面到数据展示的耗时为:
97.t≈t1(当t2《=t1 t3时)
ꢀꢀꢀ
(3)
98.t=≈t2-t3(当t2》t1 t3时)
ꢀꢀꢀ
(4)
99.根据t1、t2、t3的实际情况,(3)式有很高几率满足,即当页面activity oncreate执行完成后(页面启动完成后)直接就可以拿到接口数据展示,不需要再异步请求网络接口了。该方案基本实现了页面的秒开。
100.可见,通过页面数据的预加载方案,能较大幅度的提升页面从打开到展示的速度。另外经实际设备验证,也和上述结果接近。
101.本发明实施例提供了一种通用的页面预加载方案,可以明显提升activity页面的显示速度,且可以用于绝大多数的场景。本发明实施例提供的页面数据加载方法,有如下特点:
102.1、提升了activity页面数据的加载和显示速度,对于性能越差的设备,效果会越明显。
103.2、对于绝大多数场景通用,即使用户处于列表页面,不知道用户即将跳转哪个页面,也可以进行数据的预加载。因为用户处于列表页面,不确定用户可能点击页面中的哪个按钮,但是无论点击哪个按钮本发明实施例提供的方法均可以实现预加载。
104.3、当activity已完成创建但预加载数据仍在网络下载中时,页面无需重新请求网络接口数据,只需要等数据预加载完成后,会自动更新到页面之中。
105.4、一定几率达到页面秒开效果。即有几率出现这样的情况:当activity创建完并回调oncreate方法时,数据已经完成预加载,此时activity则可直接展示数据,实现页面秒开。
106.5、针对不同的页面场景,可提供不同的预加载时机。
107.下面对本发明实施例提供的页面数据加载装置进行描述,下文描述的页面数据加载装置与上文描述的页面数据加载方法可相互对应参照。
108.图4是本发明实施例提供的页面数据加载装置的结构示意图。如图4所示,所述装置包括预加载模块10及页面展示模块20,其中:预加载模块10用于:响应于获取到从当前的第一页面跳转到第二页面的触发操作,在利用第一线程对所述第二页面启动结束之前,开启第二线程下载所述第二页面的接口数据,并将所述接口数据存储于预设存储区域;页面展示模块20用于:在所述第二页面启动结束之后,从所述预设存储区域中读取所述接口数据,根据所述接口数据刷新所述第二页面。
109.本发明实施例提供的页面数据加载装置,通过响应于获取到从当前的第一页面跳转到第二页面的触发操作,在利用第一线程对第二页面启动结束之前,开启第二线程下载第二页面的接口数据,并将接口数据存储于预设存储区域,在第二页面启动结束之后,从预设存储区域中读取接口数据,根据接口数据刷新第二页面,实现了接口数据的预加载,大大缩短了页面从启动到显示的总时间,提高了页面加载速度,且具备通用性。
110.根据本发明实施例提供的一种页面数据加载装置,预加载模块10在用于响应于获取到从当前的第一页面跳转到第二页面的触发操作,在利用第一线程对所述第二页面启动结束之前,开启第二线程下载所述第二页面的接口数据时,具体用于:响应于获取到所述第一页面中预设控件的点击事件,开启所述第二线程下载所述第二页面的所述接口数据;其中,所述预设控件的点击事件用于触发利用所述第一线程对所述第二页面进行启动,所述点击事件包括按下事件及随后的松开事件。
111.本发明实施例提供的页面数据加载装置,通过在获取到第一页面中预设控件的点击事件,开启第二线程下载第二页面的接口数据,实现了在第二页面启动的同时即下载第二页面的接口数据,可有效提高页面加载速度。
112.根据本发明实施例提供的一种页面数据加载页面数据加载装置,预加载模块10在用于响应于获取到从当前的第一页面跳转到第二页面的触发操作,在利用第一线程对所述第二页面启动结束之前,开启第二线程下载所述第二页面的接口数据时,具体用于:响应于获取到所述第一页面中预设控件的按下事件,判断所述预设控件是否处于可滑动列表中;响应于所述预设控件未处于可滑动列表中,开启所述第二线程下载所述第二页面的所述接口数据;响应于所述预设控件处于可滑动列表中,则监听所述按下事件随后的松开事件,响应于监听到所述按下事件随后的所述松开事件,开启所述第二线程下载所述第二页面的所述接口数据;其中,所述预设控件的点击事件用于触发利用所述第一线程对所述第二页面
进行启动,所述点击事件包括所述按下事件及随后的所述松开事件。
113.本发明实施例提供的页面数据加载装置,通过响应于获取到第一页面中预设控件的按下事件,判断预设控件是否处于可滑动列表中,响应于预设控件未处于可滑动列表中,开启第二线程下载第二页面的接口数据;响应于预设控件处于可滑动列表中,则监听按下事件随后的松开事件,响应于监听到按下事件随后的松开事件,开启第二线程下载第二页面的所述接口数据,实现了在第二页面启动之前即开始下载第二页面的接口数据,进一步提高了页面加载速度。
114.根据本发明实施例提供的一种页面数据加载装置,页面展示模块20在用于从所述预设存储区域中读取所述接口数据时,具体用于:响应于所述接口数据下载完成,从所述预设存储区域中直接读取所述接口数据;响应于所述接口数据尚未下载完成,等待所述接口数据下载完成后,从所述预设存储区域中读取所述接口数据。
115.本发明实施例提供的页面数据加载装置,通过响应于接口数据下载完成,从预设存储区域中直接读取接口数据,响应于接口数据尚未下载完成,等待接口数据下载完成后,从预设存储区域中读取接口数据,通过可阻塞的方法实现接口数据的读取,在保证页面加载速度的基础上,进一步保证了接口数据的可靠获取。
116.根据本发明实施例提供的一种页面数据加载装置,预加载模块10在用于将所述接口数据存储于预设存储区域时,具体用于:将所述接口数据存储于所述预设存储区域,并与所述接口数据的识别标识对应存储;所述从所述预设存储区域中读取所述接口数据,包括:根据所述识别标识从所述预设存储区域中读取所述接口数据。
117.本发明实施例提供的页面数据加载装置,通过将接口数据存储于预设存储区域,并与接口数据的识别标识对应存储,实现了不同接口数据的区分,便利了接口数据的准确获取。
118.根据本发明实施例提供的一种页面数据加载装置,预加载模块10在用于开启第二线程下载所述第二页面的接口数据,并将所述接口数据存储于预设存储区域时,具体用于:响应于所述第二页面的接口数据尚未下载完,所述接口数据的识别标识对应的状态标识设置为第一状态;响应于所述第二页面的接口数据下载完成,所述接口数据的识别标识对应的状态标识设置为第二状态;所述响应于所述接口数据尚未下载完成,等待所述接口数据下载完成后,从所述预设存储区域中读取所述接口数据,包括:响应于所述状态标识设置为第一状态,阻塞从所述预设存储区域中读取所述接口数据的方法执行;响应于所述状态标识在等待有效期内变更为第二状态,唤醒所述从所述预设存储区域中读取所述接口数据的方法执行,根据所述接口数据的识别标识从所述预设存储区域中读取对应的所述接口数据。
119.本发明实施例提供的页面数据加载装置,通过响应于接口数据下载完成,从预设存储区域中直接读取接口数据,响应于接口数据尚未下载完成,等待接口数据下载完成后,从预设存储区域中读取接口数据,通过可阻塞的方法实现接口数据的读取,在保证页面加载速度的基础上,进一步保证了接口数据的可靠获取。
120.根据本发明实施例提供的一种页面数据加载装置,预加载模块10在用于将所述接口数据存储于预设存储区域时,具体用于:将所述接口数据存储于缓存中;所述装置还包括数据清理模块,所述数据清理模块用于:在设置的缓存有效期后将所述接口数据从所述缓
存中删除。
121.本发明实施例提供的页面数据加载装置,通过将接口数据存储于缓存中,并在设置的缓存有效期后将接口数据从缓存中删除,保证了数据的及时性,节省了存储空间。
122.图5是本发明提供的电子设备的结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(communications interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行页面数据加载方法,该方法包括:响应于获取到从当前的第一页面跳转到第二页面的触发操作,在利用第一线程对所述第二页面启动结束之前,开启第二线程下载所述第二页面的接口数据,并将所述接口数据存储于预设存储区域;在所述第二页面启动结束之后,从所述预设存储区域中读取所述接口数据,根据所述接口数据刷新所述第二页面。
123.此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
124.另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的页面数据加载方法,该方法包括:响应于获取到从当前的第一页面跳转到第二页面的触发操作,在利用第一线程对所述第二页面启动结束之前,开启第二线程下载所述第二页面的接口数据,并将所述接口数据存储于预设存储区域;在所述第二页面启动结束之后,从所述预设存储区域中读取所述接口数据,根据所述接口数据刷新所述第二页面。
125.又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的页面数据加载方法,该方法包括:响应于获取到从当前的第一页面跳转到第二页面的触发操作,在利用第一线程对所述第二页面启动结束之前,开启第二线程下载所述第二页面的接口数据,并将所述接口数据存储于预设存储区域;在所述第二页面启动结束之后,从所述预设存储区域中读取所述接口数据,根据所述接口数据刷新所述第二页面。
126.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
127.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上
述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
128.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献