FileNotFoundException异常与通用图像装载机 [英] FileNotFoundException with Universal Image Loader
问题描述
这个问题是关于这个时下流行的Android库,通用图像Android版装载机:<一href="https://github.com/nostra13/Android-Universal-Image-Loader">https://github.com/nostra13/Android-Universal-Image-Loader
This question is about this popular Android library, Universal Image Loader for Android: https://github.com/nostra13/Android-Universal-Image-Loader
- 在我确信WRITE_EXTERNAL_STORAGE加入。
- 我启用了内存和磁盘缓存
- 在我使用UnlimitedDiscCache磁盘缓存
- 在我建立针对Android 2.2的SDK。当我测试的是Android 4.1.2的Nexus S设备上的应用程序的异常发现。
- 对于大多数我的图片中,加载是光滑细腻。但是,对于某些图像,我总是得到相同的异常。下面是一个例子。
图片网址:<一href="http://i10.topit.me/l046/10046137034b1c0db0.jpg">http://i10.topit.me/l046/10046137034b1c0db0.jpg
回溯:
01-14 00:24:42.125:
ERROR/ImageLoader(1671): http://i10.topit.me/l046/10046137034b1c0db0.jpg
java.io.FileNotFoundException: http://i10.topit.me/l046/10046137034b1c0db0.jpg
at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177)
at com.nostra13.universalimageloader.core.download.URLConnectionImageDownloader.getStreamFromNetwork(URLConnectionImageDownloader.java:40)
at com.nostra13.universalimageloader.core.download.ImageDownloader.getStream(ImageDownloader.java:27)
at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.saveImageOnDisc(LoadAndDisplayImageTask.java:296)
at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:204)
at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:128)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
请帮忙。
推荐答案
追问:
我终于不用改变一行服务器code解决我的问题。我所做的是与替换默认的 URLConnectionImageDownloader HttpClientImageDownloader
I finally solved my problem without changing one line of server code. What I did is replacing the default URLConnectionImageDownloader with HttpClientImageDownloader
code样品:</ P>
Code sample:
HttpParams params = new BasicHttpParams();
// Turn off stale checking. Our connections break all the time anyway,
// and it's not worth it to pay the penalty of checking every time.
HttpConnectionParams.setStaleCheckingEnabled(params, false);
// Default connection and socket timeout of 10 seconds. Tweak to taste.
HttpConnectionParams.setConnectionTimeout(params, 10 * 1000);
HttpConnectionParams.setSoTimeout(params, 10 * 1000);
HttpConnectionParams.setSocketBufferSize(params, 8192);
// Don't handle redirects -- return them to the caller. Our code
// often wants to re-POST after a redirect, which we must do ourselves.
HttpClientParams.setRedirecting(params, false);
// Set the specified user agent and register standard protocols.
HttpProtocolParams.setUserAgent(params, "some_randome_user_agent");
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
ClientConnectionManager manager = new ThreadSafeClientConnManager(params, schemeRegistry);
ImageLoaderConfiguration config =
new ImageLoaderConfiguration
.Builder(MainActivity.sharedMainActivity.getApplicationContext())
.defaultDisplayImageOptions(defaultOptions)
.discCache(new UnlimitedDiscCache(cacheDir))
.threadPoolSize(1)
.memoryCache(new WeakMemoryCache())
.imageDownloader(new HttpClientImageDownloader(new DefaultHttpClient(manager, params)))
.build();
:)
这篇关于FileNotFoundException异常与通用图像装载机的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!