uni-app图片长度过长时,安卓手机会闪退

uni-app图片长度过长时,安卓手机会闪退

开发环境 版本号 项目创建方式
Windows 10 HBuilderX
### 示例代码:


<rich-text :nodes="richHtml" :selectable="true"></rich-text>  
其中richHtml为:
```html
<p>
   &nbsp;
</p>
<p>
   <img style="width:100%;height:100%" alt="image_8a8ad04578b3706a0178ba1138bc1263" src="http://oa.skshu.com/ServiceAction/com.eweaver.document.file.FileDownload?attachid=xxx&download=1" style="height: 44696px; width: 835px" width="839" />
</p>

(因该attachid需要保密,将在下方保密信息中提供,替换xxx即可)


### 操作步骤:


打开资讯详情,显示富文本内容,大部分内容可以正常展示,某一条资讯因为图片问题,进入详情后,安卓出现闪退(ios正常展示),将attachid替换成其他图片id,可正常展示;

预期结果:

该图片在浏览器中可下载,应能正常展示


### 实际结果:


实际页面出现闪动,然后闪退

bug描述:

富文本组件 <rich-text> 或image组件加载某张图片时,安卓手机会闪退


更多关于uni-app图片长度过长时,安卓手机会闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html

17 回复

图片很长,放在image标签里,也会闪退

更多关于uni-app图片长度过长时,安卓手机会闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html


解决了吗,我们也遇到了

我也遇到这个问题了,用苹果手机拍摄的全景照片,上传到服务器,image加载图片地址,在安卓端会闪退

请提供demo 我看排查下

回复 DCloud_Android_ST: demo在下面

回复 5***@qq.com: 出现闪退android系统手机型号发下 目前为能复现问题

回复 DCloud_Android_ST: 使用夜神模拟器,安卓7版本,见下图

回复 DCloud_Android_ST: 当 image mode 设为 “aspectFill” 时, <image :src="src" class="img" mode="aspectFill"></image>就会闪退

回复 5***@qq.com: 应该是模拟器自身问题。原因比较多。建议以真机测试为主

目前使用雷电模拟器也是7.1.2版本 没发现闪退崩溃现象

回复 DCloud_Android_ST: 请问解决了吗,显示一个高度2万多像素的图片就会造成app闪退

回复 DCloud_Android_ST: 我手机是一加8T 安卓12的系统我们公司很多同事的手机上也反映会闪退

回复 拓荒: 建议重新发帖反馈 提供demo示例

造成安卓闪退的demo

安卓版本图片

官方解决了吗,显示一个高度2万多像素的图片就会造成app闪退

这是一个典型的Android内存溢出问题。从图片尺寸信息height: 44696px; width: 835px可以看出,这张图片的分辨率过高,导致Android设备在解码和渲染时内存不足而崩溃。

问题分析:

  • 图片尺寸835×44696像素,像素总数超过3700万
  • Android系统对单张图片的内存占用有严格限制
  • iOS系统在图片处理上相对更宽容,所以能正常显示

解决方案:

  1. 服务端图片压缩(推荐) 在图片上传时进行尺寸压缩和质量优化,建议将长边限制在2000像素以内。

  2. 客户端图片处理 使用<image>组件替代<rich-text>,并添加以下属性:

<image :src="imageUrl" mode="widthFix" lazy-load></image>
  1. 图片预加载检测 在显示前获取图片信息,对超大图片进行降级处理:
uni.getImageInfo({
  src: imageUrl,
  success: (res) => {
    if(res.width > 2000 || res.height > 20000) {
      // 显示压缩版本或提示信息
    }
  }
});
回到顶部