场景
在之前的开发过程中,发现只要有视频激励组件的页面,一旦遇到切换页面的时候,就会报错updatexxxview fail截图如下。
大段大段的未找到视图,移除失败。在社区中也有相应的bug反馈,但是并由没给出具体的原因是什么。我一直以为是微信本身的bug,到现在未知我也不知道具体是不是微信的bug😄。同时也怀疑过是不是使用了uni框架造成的原因,虽然报错了,但是却没有造成使用功能上的异常,花了部分经历也没找出个所以然,所以搁置没管了。
原因
现在回过头来看看,根据报错的信息,是移除组件的时候没有找到具体的视图,那么问题很有可能在生命周期的 hide unload当中,今天鬼使神差的把 在onUnload中把
//销毁激励广告
if (videoAd.destroy) videoAd.destroy();
videoAd = null;
这行代码给注销了,神奇的是之后就再也没有上述的问题发生了。这么想来应该是 视图已经被卸载掉了,而激励广告依然在执行destory操作,在操作中发现找不到视图所以报错。这就是为什么报错总是发生在切换页面的时候。
解决途径
我没有在文档或者社区中找到,应该在合适销毁视频激励组件的回答。但是官方却给出了destroy的方法。在小游戏当中视频激励组件是单例模式,在小程序中视频激励组件是页面单例模式。所以这里是不是可以认为,根本不需要手动执行销毁视频激励组件的方法。或者这就是一个bug