如上图,我们的小程序从第一个页面跳转到(tap监听回调执行wx.navigateTo方法进行跳转)第二个页面,在测试中发现,如果多次点击,会导致跳转时间越来越长,在跳转的过程中会出现纯白页面不显示任何东西。
在程序里面log一下执行时间,如下图所示:
这是刚载入的时候执行的速度:点击跳转是在第一个页面执行点击,并记录时间。在第二个页面的onload事件和onshow事件分别取得时间与第一个页面点击时刻的时间间隔,分别只有200多与300多毫秒
下图是来回切换约30次从第一个页面与第二个页面后的结果log结果,加载时间越来越长,甚至都快到了两秒,这也导致我们的小程序在跳转的时候会有白屏现象。
请问如上问题一般是由于什么引起的?
补充问题描述:
根据反馈,重新进行log如下:
在点击监听事件开始记录时间,完成逻辑处理后调用wx.navigateTo之前log到此时执行时间。
在第二个页面的onload开始和结束log从点击开始时到这两个阶段执行时间。
在第二个页面的onshow开始和结束log从点击开始时到这两个阶段执行时间。
最后执行的效果如下:
第一次点击跳转时时间,都非常短:
跳转返回反复执行20次左右的时间记录:
期间onshow执行时间突然变成,且之后未见变短
继续反复跳转
观察结果,白屏是由于onload事件未执行导致,也就是在onload执行之前,跳转到新页面完全白屏。
继续补充进一步测试结果。
onload事件执行的开始时间仍然递增无法定位原因
onshow的开始时间到结束时间在一定数量访问次数后暴增的原因已经查明,在于我们调用了wx.getStorageSync()方法,该方法正常情况下执行时间约为200ms,但是在访问30次作用之后访问时间暴增至3000ms,(storage中没有任何数据更新,理论上每次的访问时间应该是一样的)
下面是代码片段
以下是getStorageSync执行时间