2011-11-22 59 views
0

我正在下載圖像,然後將它們保存到內部存儲器。這導致應用的緩存增長非常快。使用內部存儲 - Android - 刪除緩存文件

正如本文建議:

http://developer.android.com/guide/topics/data/data-storage.html

當設備處於低內部存儲空間,Android的可以刪除這些緩存文件來恢復空間。但是,您不應該依賴系統爲您清理這些文件。你應該總是自己維護緩存文件,並保持在合理限制的空間消耗,如1MB

我的問題是如果緩存變得太大會發生什麼,例如現在是20mb左右,並且仍在增長。

我認爲我應該遵循指導原則,並在互聯網連接可用時每次啓動應用時刪除它們。

String[] allFiles = fileList(); 

Log.e(TAG, "allFiles.length: " + allFiles.length); 


for(int k=0; k<allFiles.length; k++) 
{ 
Log.e(TAG, "allFiles [ " +k+"]: "+allFiles[k]); 

} 

但是,這段代碼總是返回零個文件。如果我嘗試訪問特定圖像,我可以輕鬆地從內部存儲器中檢索它。爲什麼這段代碼不能返回一個包含我所有圖像的數組?

什麼是遵循內部存儲器中的正確的方法..

由於提前,

安德烈亞斯

+0

您的整個文件名檢索邏輯位於'fileList()'裏面,您沒有包含它。如果您不發佈該代碼,我們無法知道爲什麼這不起作用。 – kabuko

+0

我可以單獨訪問每個圖像(文件名),沒有問題!問題是當我想要獲得上面鏈接建議的內存中所有文件的列表。上面的方法總是返回零! – andreasv

+0

啊,我的錯。我不知道'fileList()'在Context上。無論如何,我不會爲此煩惱。如果你從'getCacheDir'存儲在文件夾中,那麼只需使用'getCacheDir()。listFiles()'。 – kabuko

回答

0

某些別有用心的人昨天剛問過類似的問題。 Here's my answer到那個。但它的一些相關要點是,您可以限制整個緩存大小和/或限制在緩存中保留文件的時間,並且可以解決您的問題。

+0

謝謝你的答案。關鍵是如何訪問這些文件並放置ttl而不使用存儲網址哈希值的txt文件?以及如何限制尺寸。我們一直在談論內部記憶! – andreasv

+0

正如我在你的主要帖子中評論的,如果你沒有發佈相關行,就沒有辦法知道你的代碼有什麼問題......至於限制大小,你可以做一些像使用LruCache,覆蓋sizeOf方法返回緩存文件的大小,然後從緩存中刪除逐出文件。 http://developer.android.com/reference/android/util/LruCache.html – kabuko

+0

我很抱歉,但這是完全不相干的我問...我的問題是,與上面的代碼文件沒有列出甚至如果它存在android開發人員網站中的建議。無論如何謝謝你的答案 – andreasv

相關問題