小程序调用wx.chooseImage程序奔溃的问题
发布于 4 年前 作者 lipeng 3829 次浏览 来自 分享

就在昨天把老板提的需求写好之后,上传审核提交发布。然后就出现了问题。在用户需要上传图片的时候,只要选择拍照程序就会重新启动。我当场就蒙逼了。小程序的bug还真是数不胜数啊。

下面贴上部分代码:

wx.chooseImage({
   count,
   sizeType: ['original''compressed'],
   sourceType: ['camera''album']


调试的时候,同事的手机使用了之后直接重新启动,或者卡住不动弹。然而另外两位同事却没啥问题,于是在两台小米8都不行,一台Mix2和Mi10都没问题的情况下,安卓开发组的同事下了判断,有可能是内存不足。调用相机是很占系统内存的,导致了小程序奔溃。

在我反复的看文档都找不到解决问题的办法时,我在论坛上看看有啥解决问题的方法。却发现18年就有帖子说出现这种情况了。但是官方没给出没有解决问题的方法。于是我灰头土脸的回到百度了起来。却没有发现一个有用的。都是教导怎么使用wx.chooseImage的demo。

看着代码我突然发现sourceType同时调用两种类型album+camera会占用较大内存,那么单一调用是不是会好一点。虽然这不是解决问题的方法。但是应该可以让更多的手机兼容一下小程序。

于是我就写了个弹窗

const sourceType = Number(type) === 1 ? ['camera'] : ['album']
      wx.chooseImage({
        count,
        sizeType: ['original', 'compressed'],
        sourceType, // camera album
        success (res) {
          // tempFilePath可以作为img标签的src属性显示图片
          const tempFilePaths = res.tempFilePaths

不得不说这效果还是可以的。至少我的小米8兼容了此项做法,皆大欢喜。老板现在要是问起来,接下来的锅让腾讯背上就好。(~ ̄▽ ̄)~ 

2 回复

还有这个坑啊,我得改改我的小程序了

哈,这个我一直在用的方法。

这个代码多写点,兼容性确实好很多。

我也碰到过。

回到顶部