我正在将服务器中的图像下载到ListView
,现在我正在使用ImageDownloader示例代码执行此任务。到目前为止它的工作正常。
但是我希望在save
中ListView
SD card
的图像,但我很困惑何时存储图像,因为图像是异步下载的,而且由于ViewHolder模式,它很难实现我来判断。
下次我想将它存储在SD卡中时,我只想从内存中读取它。
ImageDownload将位图存储在缓存中,并在下载后从那里获取它。但问题是它的行为是不可预测的。
有时它从服务器下载,有时从缓存中下载。
所以任何人都可以帮我找一下在SD卡中存储图像的正确位置。
答案 0 :(得分:1)
修改ImageDownloader类以保存图像:
download(String url, ImageView imageView, Boolean saveData)
private Boolean saveData;
并在其中存储下载dmethod中作为参数给出的值:
this.saveData = saveData;
@覆盖 protected void onPostExecute(Bitmap bitmap){ if(isCancelled()){ bitmap = null; }
addBitmapToCache(url, bitmap); if (saveData == true) { try { FileOutputStream out = new FileOutputStream(path); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); } catch (Exception e) { e.printStackTrace(); } } if (imageViewReference != null) { ImageView imageView = imageViewReference.get(); BitmapDownloaderTask bitmapDownloaderTask = getBitmapDownloaderTask(imageView); // Change bitmap only if this process is still associated with it if (this == bitmapDownloaderTask) { imageView.setImageBitmap(bitmap); } } }
其中path是您要保存图像的路径。
并且下次要加载图像之前,您必须查看它是否已经下载并从路径加载它,否则请调用ImageDownloader。
就是这样!享受!