2012-10-18 47 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