【发布时间】:2019-03-20 12:31:36
【问题描述】:
我正在使用 Glide 4.x 并在 URL 返回 404 时收到 FileNotFoundException。我尝试使用 RequestListener 捕获异常。但它不是缓存这个异常。
GlideApp.with(getApplicationContext()).load(URL).placeholder(R.mipmap.ic_launcher).listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
System.out.println("MainActivity.onLoadFailed"+e.getMessage());
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
System.out.println("MainActivity.onResourceReady");
return false;
}
}).error(R.mipmap.ic_launcher).transform(new CircleCrop()).into(profileImage);
日志如下:
2019-03-20 17:48:07.134 32233-32233/com.zyta.zflikz W/Glide:加载 失败了 https://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAAAAI/AAAAAAAAAAA/ACLGyWByUX_zz0_9075kpV4xIdPmN_dtNQ/s96-c/photo.jpg 尺寸 [183x183] com.bumptech.glide.load.engine.GlideException 类:加载资源失败 有2个原因: java.io.FileNotFoundException(https://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAAAAI/AAAAAAAAAAA/ACLGyWByUX_zz0_9075kpV4xIdPmN_dtNQ/s96-c/photo.jpg) java.io.FileNotFoundException(https://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAAAAI/AAAAAAAAAAA/ACLGyWByUX_zz0_9075kpV4xIdPmN_dtNQ/s96-c/photo.jpg) 调用 GlideException#logRootCauses(String) 了解更多细节 原因(1 of 3):com.bumptech.glide.load.engine.GlideException 类:获取数据失败, 类 java.io.InputStream,远程 有1个原因: java.io.FileNotFoundException(https://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAAAAI/AAAAAAAAAAA/ACLGyWByUX_zz0_9075kpV4xIdPmN_dtNQ/s96-c/photo.jpg) 调用 GlideException#logRootCauses(String) 了解更多细节 原因(1 之 1):类 java.io.FileNotFoundException:https://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAAAAI/AAAAAAAAAAA/ACLGyWByUX_zz0_9075kpV4xIdPmN_dtNQ/s96-c/photo.jpg 原因(3 个中的 2 个):com.bumptech.glide.load.engine.GlideException 类:获取数据失败, 类 java.io.InputStream,远程 有1个原因: java.io.FileNotFoundException(https://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAAAAI/AAAAAAAAAAA/ACLGyWByUX_zz0_9075kpV4xIdPmN_dtNQ/s96-c/photo.jpg) 调用 GlideException#logRootCauses(String) 了解更多细节 原因(1 之 1):类 java.io.FileNotFoundException:https://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAAAAI/AAAAAAAAAAA/ACLGyWByUX_zz0_9075kpV4xIdPmN_dtNQ/s96-c/photo.jpg 原因(3 之 3):com.bumptech.glide.load.engine.GlideException 类:失败 LoadPath{StringUri->Object->Drawable},本地 原因(1 of 2):com.bumptech.glide.load.engine.GlideException 类:失败 解码路径{StringUri->Drawable->Drawable} 原因(2 之 2):com.bumptech.glide.load.engine.GlideException 类:失败 DecodePath{StringUri->Bitmap->Drawable} 2019-03-20 17:48:07.135 32233-32233/com.zyta.zflikz I/Glide:根本原因 (1 of 2) java.io.FileNotFoundException: https://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAAAAI/AAAAAAAAAAA/ACLGyWByUX_zz0_9075kpV4xIdPmN_dtNQ/s96-c/photo.jpg 在 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:251) 在 com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210) 在 com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:26) 在 com.bumptech.glide.load.data.HttpUrlFetcher.loadDataWithRedirects(HttpUrlFetcher.java:106) 在 com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher.java:59) 在 com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62) 在 com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302) 在 com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:272) 在 com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:233) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 在 java.lang.Thread.run(Thread.java:764) 在 com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:446) 2019-03-20 17:48:07.137 32233-32233/com.zyta.zflikz I/Glide: 根 原因(2 之 2) java.io.FileNotFoundException: https://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAAAAI/AAAAAAAAAAA/ACLGyWByUX_zz0_9075kpV4xIdPmN_dtNQ/s96-c/photo.jpg 在 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:251) 在 com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210) 在 com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:26) 在 com.bumptech.glide.load.data.HttpUrlFetcher.loadDataWithRedirects(HttpUrlFetcher.java:106) 在 com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher.java:59) 在 com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62) 在 com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302) 在 com.bumptech.glide.load.engine.DecodeJob.onDataFetcherFailed(DecodeJob.java:397) 在 com.bumptech.glide.load.engine.SourceGenerator.onLoadFailed(SourceGenerator.java:119) 在 com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher.java:65) 在 com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62) 在 com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302) 在 com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:272) 在 com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:233) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 在 java.lang.Thread.run(Thread.java:764) 在 com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:446) 2019-03-20 17:48:07.138 32233-32233/com.zyta.zflikz I/System.out: MainActivity.onLoadFailed加载资源失败
如果有人对此有修复或替代解决方案,请告诉我。
【问题讨论】:
-
你找到解决办法了吗?
-
@kdblue 我为此添加了解决方案。请检查。
标签: android-image filenotfoundexception android-glide