if (bitmap != null)
imageView.setImageBitmap(bitmap);
else {// 如果手机内存缓存中没有图片,则调用任务队列,并先设置默认图片
queuePhoto(url, activity, imageView);
imageView.setImageResource(stub_id);
}
}
private void queuePhoto(String url, Activity activity, ImageView imageView) {
// 这ImageView可能之前被用于其它图像。所以可能会有一些旧的任务队列。我们需要清理掉它们。
picturesQueue.Clean(imageView);
PictureToLoad p = new PictureToLoad(url, imageView);
synchronized (picturesQueue.picturesToLoad) {
picturesQueue.picturesToLoad.push(p);
picturesQueue.picturesToLoad.notifyAll();
}
// 如果这个线程还没有启动,则启动线程
if (pictureLoaderThread.getState() == Thread.State.NEW)
pictureLoaderThread.start();
}
/**
* 根据url获取相应的图片的Bitmap
*
* @param url
* @return
*/
private Bitmap getBitmap(String url) {
File f = fileCache.getFile(url);
// 从SD卡缓存中获取
Bitmap b = decodeFile(f);
if (b != null)
return b;
// 否则从网络中获取
try {
Bitmap bitmap = null;
URL imageUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) imageUrl
.openConnection();
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
InputStream is = conn.getInputStream();
OutputStream os = new FileOutputStream(f);
// 将图片写到sd卡目录中去
ImageUtil.CopyStream(is, os);
os.close();
bitmap = decodeFile(f);
return bitmap;
} catch (Exception ex) {
ex.printStackTrace();