我有一個嚴重基於遠程圖像的應用程序。它們通常與ListView中的一些數據一起顯示。許多這些圖像是新的,許多舊圖像將不會再被看到。用於清潔SD卡上圖像緩存目錄的解決方案
我目前將所有這些圖像存儲在自定義緩存目錄(ala evancharlton的magnatune應用程序)中的SD卡上。
我注意到大約10天后,目錄總計〜30MB。這比我預期的要多得多,這讓我相信我需要提出一個清理舊文件的好方案......我想不出一個好的解決方案。也許你可以幫忙。這些是我的想法:
刪除舊文件。當應用程序啓動時,啓動後臺線程,並刪除所有超過X天的文件。這似乎是一個問題,但是,如果用戶主動使用應用程序,這可能會導致設備呆滯,如果有數百個文件要刪除。
在SD卡上創建文件後,請致電
new File("/path/to/file").deleteOnExit();
這將導致所有文件在VM退出時被刪除(我甚至不知道此方法是否適用於Android)。這是可以接受的,因爲即使需要爲會話緩存文件,它們也不需要爲下一個會話緩存。看起來如果在虛擬機退出時有很多文件需要刪除,這也會降低設備速度。刪除舊文件,達到最大文件數量。與#1相同,但一次只能刪除N個文件。我不太喜歡這個想法,如果用戶非常活躍,它可能永遠無法趕上並保持緩存目錄清潔。
這就是我所擁有的一切。任何建議,將不勝感激。
我將使用WakefulIntentService和AlarmManager。好主意 - 謝謝! – synic 2010-04-01 02:23:58