从XML内容下载图像的最佳方式

时间:2012-01-25 11:34:27

标签: android download android-image

我正在设计一个Android应用程序,它将显示一些将以xml格式从远程URL检索的新闻,比如http://adomain/latest.xml

XML文件具有以下格式:

<articles>
<article>
    <id>6</id>
    <title>A sample title</title>
    <image>http://adomain/images/anImage.jpg</image>
    <lastupdate>1326938231</lastupdate>
    <content><![CDATA[Sample content]]></content>
</article>
...
</articles>

我创建了一个侦听连接更改的更新程序服务,当系统通过Internet连接时,它会尝试下载xml文件。然后解析它并保存数据。 Updater每隔10分钟在一个单独的线程上运行。

我的问题是: 处理图像的最佳方法是什么?

a)我应该在显示新闻项目时对图像执行延迟加载

OR

b)我在解析xml文件时应该下载图像吗?

3 个答案:

答案 0 :(得分:0)

我建议在显示新闻项时延迟加载,因此您不会使用过多的带宽(并且可能会为用户带来成本)。如果用户不想查看图像,则无需下载图像。

答案 1 :(得分:0)

对于图像,我认为你总是遵循延迟加载,因为图像加载可能需要一些时间,而且一个高效的延迟加载器可以帮助你避免任何未来的内存问题。

答案 2 :(得分:0)

只需从您的XMl中获取<Image>标记数据。

String imgURL  = your <Image> value;  

 ImageView  imageView = new ImageView(this);

                Bitmap  bmp = BitmapFactory.decodeStream(new java.net.URL(imgURL).openStream());

                    imageView.setId(i);
                    imageView.setImageBitmap(bmp);

这将用于设置图像,您还可以在“bmp”中获取图像。

Android provide directly show image from URL:

将商店图片存储到SD卡:

File file = new File (pathOfSdCard, iamgeName);

try {                      
    file.createNewFile();
    FileOutputStream out = new FileOutputStream(file);
    bitmap.compress(Bitmap.CompressFormat.JPEG, 10, out);
                out.flush();
                out.close();

    } catch (Exception e) {
                e.printStackTrace();
    }

将线放到AndroidMenifest:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

这是我在我的应用中使用的全部内容。它工作正常。

我希望这会对你有所帮助。