微信进不去,小程序闪退打不开怎么办
一、现象
操作:通过扫描小程序码进入小程序,无其他操作设备:某些安卓手机,如部分华为P20,OPPO r11,小米mix3等
微信版本:7.0+(当前最新版本)
操作系统:均为当前较新系统
出现概率:大部分机型不会出现,少数机型20%左右,少数机型80%左右
二、排查原因
使用微信开发工具的 Audit 功能无异常清缓存无效
关闭多余运行程序无效
网速正常
大多为较新机型,无系统、版本、机型等过旧不兼容问题
三、过程
bug拖了很久,因为网上找到的所有原因和解决方案都不生效。客观原因找不到,只能一行一行拆解代码来检查。找到大概率出现闪退的手机,进行真机测试。
把进入小程序时执行的所有代码注释掉,至少5次真机测试,小程序没有闪退,说明确实跟小程序执行的代码有关。
逐行释放执行代码,进行真机测试,由于是概率出现闪退,所以至少测试5次以上。
最终定位到问题代码
showMap字段被我使用wx:if控制两个view的交替显示与隐藏,于是可以判断,是在两个view销毁或重新渲染时出现闪退。
改用hidden实现显示与隐藏后,闪退现象消失。
四、结论
当初考虑到两个view的切换频率并不高,且代码内容较多,所以使用wx:if代替了hidden。但是扫码进入页面加载后,立即进行销毁和重新渲染,产生了非常高的切换消耗,导致小程序闪退。看来以后要谨慎选择wx:if或hidden了。