首页 > 代码库 > 使用universal-image-loader中出现的EOFException解决方法
使用universal-image-loader中出现的EOFException解决方法
直接贴代码
public class HttpClientImageDownloader extends BaseImageDownloader implements ImageDownloader { public HttpClientImageDownloader(Context context) { super(context); } @Override protected InputStream getStreamFromFile(String imageUri, Object extra) throws IOException { String filePath = Scheme.FILE.crop(imageUri); File file = new File(filePath); if(!file.exists()) file.createNewFile(); return new ContentLengthInputStream(new BufferedInputStream(new FileInputStream(filePath), BUFFER_SIZE), (int) new File(filePath).length()); } @SuppressLint("UseValueOf") @Override protected InputStream getStreamFromNetwork(String imageUri, Object extra) throws IOException { // HttpURLConnection conn = createConnection(imageUri, extra); // // int redirectCount = 0; // while (conn.getResponseCode() / 100 == 3 && redirectCount < MAX_REDIRECT_COUNT) { // conn = createConnection(conn.getHeaderField("Location"), extra); // redirectCount++; // }<span style="font-family: Arial, Helvetica, sans-serif;">//EOFException来自conn.getResponseCode()</span> // InputStream imageStream; // try { // imageStream = conn.getInputStream(); // } catch (IOException e) { // // Read all data to allow reuse connection (http://bit.ly/1ad35PY) // IoUtils.readAndCloseStream(conn.getErrorStream()); // throw e; // } DefaultHttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(imageUri); request.getParams().setParameter("http.socket.timeout", new Integer(connectTimeout)); request.addHeader("Pragma", "no-cache"); request.addHeader("Cache-Control", "no-cache"); request.addHeader("Charset", "UTF-8"); HttpResponse httpResponse = client.execute(request); HttpEntity entity = httpResponse.getEntity(); InputStream imageStream = entity.getContent(); return new ContentLengthInputStream(new BufferedInputStream(imageStream, BUFFER_SIZE), (int)entity.getContentLength()); } }另外配置为自己的imageloader
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()) .defaultDisplayImageOptions(defaultOptions) .threadPriority(Thread.NORM_PRIORITY - 2) .denyCacheImageMultipleSizesInMemory() .threadPoolSize(3) .imageDownloader(new HttpClientImageDownloader(this )) .tasksProcessingOrder(QueueProcessingType.LIFO) .memoryCache(new WeakMemoryCache()) .build();
使用universal-image-loader中出现的EOFException解决方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。