cocoscreator 看广告崩溃卡死这个问题说大不大,说小不小,因为原因有点多,就我自己做了一个项目而言,遇到崩溃就5、6种情况,今天跟大家分享一下
一、大方向定位问题
看完广告崩溃大方向有两种可能: 1.js/ts代码的问题;2.安卓的问题。这个定位就比较简单,直接打印看看就就能发现问题了
①在调用前打印
如果走到了这里说明调用前的代码是没有问题的
②直接在调用的回调那打断点
如果没有走到这里那就是安卓的问题了,可以看看js跟安卓相互传值有没有问题或者上网查查看这里只提供查找问题的思路安卓我也不懂
③确认是回调成功之后产生的问题
注意,这里有个大坑
场景:看完广告回调之后如果直接退出当前页面有可能会导致程序崩溃!
报错说找不到节点找不到组件,但是那个节点在首次加载可以加载出来,说明就不是代码的问题,这里涉及到执行顺序的问题。
原因 当用户看完广告回到当前界面,就要回调请求php告诉他我看完广告了需要给我返回相应的数据重新找节点刷新界面。
因为监听器是在页面加载的时候就开始侦听的,也就是说一回来监听器就会继续执行回调,php请求的时候可能会因为各种原因延时加载(时间很短不怎么能看出来),在php请求的时候也会有一个回调,要在php回调刷新界面节点的数据,实际上这里产生了时间差,你看完广告马上销毁当前界面,而实际的方法还在执行,所以就会报找不到节点的或者getComponent的错。
解决方案 我直接简单粗暴在php回调对要刷新页面数据的方法做了一个判断,if(!this.node){return;},他继续执行这个方法,但是只要当前界面不存在就不往下执行了