确定BitmapFactory.decodeStream()是否成功而没有错误

时间:2014-11-26 10:52:33

标签: android bitmap

我在AsyncTask中使用BitmapFactory.decodeStream()从互联网上下载位图。在我的应用程序中,我有一个图像列表视图,我只想下载用户可以看到的位图,并取消用户滚动的位图的所有下载请求通过。下载完成后,我缓存位图,所以我不必再次下载它。要取消位图下载,请致电AsyncTask.cancel(true)

问题是有时BitmapFactory.decodeStream()会输出一个警告,说明发生了InterruptedIOException(因为我在下载时取消了Task),但它实际上不会抛出异常。通常,当发生这种情况时,函数返回一个半加载的位图。不幸的是,由于返回的位图不为null,因此应用程序只假定下载成功并缓存了这一半下载的位图。从此时起,用户将被卡在半载位图中,直到清除缓存为止。

所以我的问题是,有没有办法检查BitmapFactory.decodeStream()是否真的成功下载了位图?

1 个答案:

答案 0 :(得分:0)

虽然我没有想办法判断BitmapFactory.decodeStream()是否完成没有错误,但我确实找到了解决方法。我只是在调用BitmapFactory.decodeStream()之前和调用BitmapFactory.decodeStream()之后检查任务是否已被取消,以确定在BitmapFactory.decodeStream()调用期间该任务是否已被取消。如果有,我只是假设BitmapFactory.decodeStream()失败(它可能有)并执行必要的清理代码以确保位图永远不会进入缓存。