使用universal-image-loader时报异常java.io.IOException: Mark has been invalidated.

在使用universal-image-loader加载图片的时候,在BaseImageDecoder.defineImageSizeAndRotation->imageStream.reset()执行的时候报如下异常:

01-25 18:35:19.777: W/System.err(4784):     at java.io.IOException: Mark has been invalidated.
01-25 18:35:19.777: W/System.err(4784): java.io.BufferedInputStream.reset(BufferedInputStream.java:350)
01-25 18:35:19.777: W/System.err(4784):     at com.jstv.lxtv.AsyncImageLoader.loadImageFromUrl(AsyncImageLoader.java:199)
01-25 18:35:19.777: W/System.err(4784):     at com.jstv.lxtv.AsyncImageLoader$2.run(AsyncImageLoader.java:88)
01-25 18:35:19.777: W/System.err(4784):     at java.io.BufferedInputStream.reset(BufferedInputStream.java:350)
01-25 18:35:19.777: W/System.err(4784):     at com.jstv.lxtv.AsyncImageLoader.loadImageFromUrl(AsyncImageLoader.java:199)
01-25 18:35:19.777: W/System.err(4784):     at com.jstv.lxtv.AsyncImageLoader$2.run(AsyncImageLoader.java:88)

解决办法:

在BaseImageDecoder.defineImageSizeAndRotation 方法下的imageStream被decodeStream之前调用imageStream.mark(1024*1024)


不过,后来使用universal-image-loader-1.9.2版本,就没有这个问题了,从源码发现imageStream没有再调用reset的方法了,在reset之前一定要调用mark();


你可能感兴趣的:(mark,has,been,invali)