Android App Dev - 仅下载一次以显示图像

时间:2011-05-18 04:49:04

标签: java android download

我目前使用下面的代码下载然后显示图像,我只是希望有人可以告诉我如何检查文件是否已经下载并且只是显示如果是这样,否则然后下载并显示..请帮助

    void downloadFile(String fileUrl){
    URL myFileUrl =null; 
    try {
    myFileUrl= new URL(fileUrl);
    } catch (MalformedURLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    try {
    HttpURLConnection conn= (HttpURLConnection)myFileUrl.openConnection();
    conn.setDoInput(true);
    conn.connect();
    InputStream is = conn.getInputStream();

    Bitmap bmImg = BitmapFactory.decodeStream(is);
    ImageView imView = (ImageView)findViewById(R.id.imview);
    imView.setImageBitmap(bmImg);
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

3 个答案:

答案 0 :(得分:0)

File imageIamInterestedIn = new File( filePath );
if (!imageIamInterestedIn.exists())
{
    download();
}
else
{
    imageView.setImageBitMap( BitmapFactory.decodeFile( filePath ) );
}

答案 1 :(得分:0)

您需要以某种方式编写缓存,临时内存缓存或持久数据库/文件缓存。

以下是实现目标的一些步骤:

  1. 有人要求在他们的设备上查看图片。
  2. 检查您的缓存(如上所述的内存或持久性)。
  3. 如果它存在,请返回,否则使用您的代码获取图像。
  4. 如果您不想再次获取此图像,则需要持久缓存,因为您将来会经常访问此图像。如果考虑到速度,则需要临时内存缓存,并且将来不会非常访问此图像。

答案 2 :(得分:0)

只需下载此LazyLoader:http://open-pim.com/tmp/LazyList.zip

然后有一个ImageLoader类可能对您上面提到的相同任务有所帮助。

有关详细信息:Lazy load of images in ListView,它适用于列表视图,但您可以使用相同的方式异步加载图像。