2012-10-18 46 views
1

我正在我的应用程序中实现新闻页面。我希望该页面下载任何新图像并将它们存储在手机中。只下载新的图像

我的问题是:我该如何判断哪些图像已被下载,哪些没有?

我正在考虑将图像保存为yymmddhhss.png,但似乎马虎。我看到有人使用url.hashCode()实现,但我不确定它做了什么,所以我不确定它是否适用于我的应用程序。

我想实现使用内置函数或文件名技巧。我宁愿不设置数据库或偏好来存储上次下载的图像的名称/日期。

+0

你想跨越发射缓存图像?同意数据库很重。假设这是某种RSS /原子饲料,我会追加文章的URL到图像的文件名,或者只是使用原来的文件名.. – speakingcode

+0

你尝试[Fedor的](http://stackoverflow.com/用户/ 95313/fedor)[懒加载](http://stackoverflow.com/a/3068012/450534)?如果不真正关心它们被存储为什么文件名,这个解决方案很有用。如果出于某种原因,那么延迟加载将不能完全符合您的需求列表。 –

+0

为什么你不能只使用url的名称,带走非法字符(即只提取图像URL的字母数字字符串)?这样它总是会匹配,永远是一致的,更不用说死容易了...... – dineth

回答

2

不要使用hashCode()。这是Java特有的。 如果你看起来更多 - hashCode()

只要在Java应用程序的执行过程中多次调用同一对象时,hashCode方法必须始终返回相同的整数,前提是没有在equals比较中使用的信息对象被修改。 该整数不需要从应用程序的一次执行到同一应用程序的另一次执行保持一致。


最简单的解决方法是md5完整的URL并用它来命名该文件。它会为您提供一致的文件名长度,并最大限度地减少与其他图像冲突的机会。您不需要为名称添加日期,因为您可以从写入文件的时候直接检索它。

一个简单的例子来获得MD5 - Example

+0

+1,对于一个说“不要随流”而言的人。赶上。 – MKJParekh

+0

用这种方法每个图像都有一个新的名字是否正确?只需使用像:banner1.jpg,banner2.jpg,banner3.jpg等 – Rawr

+0

与'md5​​'重复的文件名的机会统计非常非常小。为了您的目的,您不应该担心名称冲突。 – kungfoo