收藏
回答

微信小游戏在安卓手机闪退,概率50%

框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
小游戏 Bug Android 8.1.0 魅族 16p 7.0.13


只在安卓手机上会出现,概率大概50% 苹果和模拟器上都没问题

我刚刚已经上传了日志,微信号是tarzandong,麻烦帮我看看具体是什么原因导致的闪退

另一个闪退的手机也上传了日志,微信号是 laizi_houzhen

微信小游戏的appid:wxddb36e5e1146299c

回答关注问题邀请回答
收藏

1 个回答

  • VIseaTor 吴迪
    VIseaTor 吴迪
    2020-04-21

    你好,

    经过排查发现:

    img.src = 'src/test1.jpg'
    img2.src = 'src/test1.jpg'
    
    img.src = 'src/test2.jpg'
    img2.src = 'src/test2.jpg'
    

    类似这样的调用序列(多个image同时加载同一个src,又在后面将全部的src替换为另一个路径),会触发客户端bug导致闪退,将在下一个微信版本修复。

    建议避免进行上面的调用行为或增加一个image对象保持原有的src进行规避:

    img_tmp.src = 'src/test1.jpg' // 规避
    img.src = 'src/test1.jpg'
    img2.src = 'src/test1.jpg'
    
    img_tmp2.src = 'src/test2.jpg' // 规避
    img.src = 'src/test2.jpg'
    img2.src = 'src/test2.jpg'
    

    感谢反馈

    2020-04-21
    有用 1
    回复 5
    • Tarzan Dong
      Tarzan Dong
      2020-04-21
      你好,为进一步明确在哪段代码,追问一下:即使不是同时改为另一个路径也会触发对吧?如果二者先后改为不同的src路径不会触发,是这样的吧?
      2020-04-21
      回复
    • VIseaTor 吴迪
      VIseaTor 吴迪
      2020-04-21回复Tarzan Dong
      触发的点在于前一个pathA在加载完成之前被另一pathB替代,当pathA真正加载完成时发现已经没有任何一个img的src为pathA了,这时会crash
      所以同时改为的路径不一定要相同,只要改完后pathA加载完成发现没有img的src为pathA就会crash
      2020-04-21
      回复
    • VIseaTor 吴迪
      VIseaTor 吴迪
      2020-04-21回复Tarzan Dong
      另外,如果只是一个img有这个pathA,改为另一个pathB不会有问题。问题只会出现在多个img同时有pathA但都被改成其他path(不一定相同)的情况
      2020-04-21
      回复
    • Tarzan Dong
      Tarzan Dong
      2020-04-21回复VIseaTor 吴迪
      我仔细想了想,暂时没找到你说的这种情况,但有另一种情况,你帮我看看会不会是它导致的:我有几张头像图片,同时在一张画布的多处渲染。类似于 drawImage(img1,x0,y0); drawImage(img1,x1,y1).  这会是你说的这种情况的变种版本吗?
      2020-04-21
      回复
    • Tarzan Dong
      Tarzan Dong
      2020-04-22
      早上8点忙到现在,还是找不到bug所在,加你微信了,多谢支持
      2020-04-22
      回复
登录 后发表内容
问题标签