glide加载不出大图并报错 java.net.SocketTimeoutException

本文介绍了解决Glide加载图片失败的方法,包括配置OKHTTP依赖以解决网络超时问题,以及通过禁用硬件加速来处理超大尺寸图片加载失败的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      在使用Glide加载图片时出现加载不出来的的问题,通过使用以下方法可以打印出错误信息:

Glide.with(context).load(url).diskCacheStrategy(DiskCacheStrategy.SOURCE)
                    .placeholder(R.mipmap.default_logo2)
                    .error(R.mipmap.default_logo2)
                    .listener(new RequestListener<String, GlideDrawable>() {
                        @Override
                        public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                            e.printStackTrace();
                            return false;
                        }


                        @Override
                        public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                            return false;
                        }
                    })
                    .into(img);


打印出来的的错误信息是:java.net.SocketTimeoutException,尼玛这不是网络访问超时吗?原来Glide使用的网络加载方式不是OK HTTP,但是支持修改,通过添加依赖进行修改:

compile 'com.github.bumptech.glide:okhttp3-integration:1.5.0@aar'

       这个版本具体是什么需要与你使用的OkHttp版本相符合,具体可以去该网址进行查询:  https://github.com/bumptech/glide/wiki/Integration-Libraries

  然后需要在AndroidManifest里面加入如下代码:

<meta-data
            android:name="com.bumptech.glide.integration.okhttp3.OkHttpGlideModule"
            android:value="GlideModule" />

 经过上述一通操作后Glide成功的把图片的Bitmap加载出来了,但是你可能还会遇到下面的问题,比如你们的后台或者运营人员放上了一个大图(这里指超过4096x4096的图片,虽然这是不合理的,但是人家就是这么做了而且IOS可以正常加载出来,shit),此时可能会出现下面的错误信息:Bitmap too large to be uploaded into a texture

      原因是Android4.0以上默认开启硬件加速,但是GPU对openGLRender(从别处看到的,大概就是视图渲染之类的)有限制(不能超过4096x4096),我在这地方使用了最偷懒的方法,关闭了加载大图的Activity的硬件加速(因为运营上传的图片巨长大约有1100x10000),之后就顺利加载出了超长大图



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值