2011-09-12 45 views
0

我正在使用大量從網站獲取文本的項目。並每週下載4張圖像並將其覆蓋到相同的緩存中。如何確保緩存不會變滿?

我擔心的是緩存變成充滿存儲位圖數據的文件。它最初佔用了大約1.45mb的緩存,並且隨着獲取的圖像越來越多,持續增長。

那麼如何確保每次下載新圖像時都會刪除舊圖像?

或者我不需要擔心清理應用程序的緩存?

回答

1

從文檔:

getCacheDir() 

返回到文件系統中的專用緩存目錄的絕對路徑。這些文件將在設備存儲空間不足時被首先刪除。這些文件將被刪除時無法保證。 注意:您不應該依賴系統爲您刪除這些文件;對於緩存文件佔用的空間量,您應始終擁有合理的最大值(例如1 MB),並在超過該空間時修剪這些文件。

它取決於你,它的一個FileHandle你可以創建擦除更新移動重命名文件。 我能想到的一個filecheck像:如果file004存在,刪除它,創建新的文件

,或者如果你喜歡柔和的方式,只設置deleteOnExit()標誌上的文件,你不需要了。

編輯:當然,你去那裏的響應.. is..I只想刪除以前的緩存文件時,新的緩存文件被下載的唯一的事情

File cachedir = getCacheDir(); 
for (File f : cachedir.listFiles()) { 
    if(!f.getName().equals("newFiles")){ 
     f.delete(); 
    } 
} 
+0

好感謝。這是大約每4天,我用鬧鐘開火。那麼當我每4天提取一次新圖像時,如何刪除所有前綴緩存圖像呢? –

+0

好吧,在我的4天下載服務中,我會先將新文件下載到稱爲「新」的cachedir的子目錄中。除了「新建」文件夾之外,我會刪除Cachedir文件夾中的所有內容,而不是將新文件從新文件夾移動到緩存中。是你的問題還是我理解你錯了? – Michele

+0

是的,我喜歡這個主意。所以在我的服務中......我可以只刪除cahce中的所有內容,然後在服務的第4天下載所有新圖像? –