uni-app图片长度过长时,安卓手机会闪退
uni-app图片长度过长时,安卓手机会闪退
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 10 | HBuilderX |
### 示例代码:
<rich-text :nodes="richHtml" :selectable="true"></rich-text>
其中richHtml为:
```html
<p>
</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
图片很长,放在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系统在图片处理上相对更宽容,所以能正常显示
解决方案:
-
服务端图片压缩(推荐) 在图片上传时进行尺寸压缩和质量优化,建议将长边限制在2000像素以内。
-
客户端图片处理 使用
<image>
组件替代<rich-text>
,并添加以下属性:
<image :src="imageUrl" mode="widthFix" lazy-load></image>
- 图片预加载检测 在显示前获取图片信息,对超大图片进行降级处理:
uni.getImageInfo({
src: imageUrl,
success: (res) => {
if(res.width > 2000 || res.height > 20000) {
// 显示压缩版本或提示信息
}
}
});