微信小程序闪退-慎用wx:if

一、现象

  • 操作:通过扫描小程序码进入小程序,无其他操作
  • 设备:某些安卓手机,如部分华为P20,OPPO r11,小米mix3等
  • 微信版本:7.0+(当前最新版本)
  • 操作系统:均为当前较新系统
  • 出现概率:大部分机型不会出现,少数机型20%左右,少数机型80%左右

二、排查原因

  • 使用微信开发工具的 Audit 功能无异常
  • 清缓存无效
  • 关闭多余运行程序无效
  • 网速正常
  • 大多为较新机型,无系统、版本、机型等过旧不兼容问题

三、过程

      bug拖了很久,因为网上找到的所有原因和解决方案都不生效。客观原因找不到,只能一行一行拆解代码来检查。

  1. 找到大概率出现闪退的手机,进行真机测试。
  2. 把进入小程序时执行的所有代码注释掉,至少5次真机测试,小程序没有闪退,说明确实跟小程序执行的代码有关。
  3. 逐行释放执行代码,进行真机测试,由于是概率出现闪退,所以至少测试5次以上。
  4. 最终定位到问题代码  微信小程序闪退-慎用wx:if_第1张图片
  5. showMap字段被我使用wx:if控制两个view的交替显示与隐藏,于是可以判断,是在两个view销毁或重新渲染时出现闪退。
  6. 改用hidden实现显示与隐藏后,闪退现象消失。

四、结论

      当初考虑到两个view的切换频率并不高,且代码内容较多,所以使用wx:if代替了hidden。但是扫码进入页面加载后,立即进行销毁和重新渲染,产生了非常高的切换消耗,导致小程序闪退。看来以后要谨慎选择wx:if或hidden了。

你可能感兴趣的:(微信小程序)