1

在android中,許多圖像加載庫(例如Picasso--使用2%的磁盤緩存存儲空間,Glide)除了在內存lru緩存中使用磁盤緩存。我可以理解爲什麼這可能對從網絡下載的圖像有用 - 如果內存緩存已滿,請從磁盤讀取而不是遠程讀取它們 - 從而避免網絡延遲等。但是,如果我們只是讀取本地映像在Android設備本身 - 我們通過使用單獨的磁盤緩存與序列化的位圖數據獲得任何東西 - 因爲數據必須從磁盤讀取?如果您的應用需要縮略圖並對原始圖像進行二次採樣並將其存儲在緩存中,可能有意義嗎?有沒有研究顯示性能增益。我看到在googles samples和其他bitmap cache庫中使用了磁盤緩存。DiskLRUCache適用於Android中的位圖(以及其他)

+0

偉大的主題。我從設備加載縮略圖時出現OutOfMemory問題,處理圖像時我總是使用Glide或Picasso,但我注意到Piccasso在處理大圖像時,我仍然有時會遇到內存不足的問題。如果有更多關於思​​考的知識可以回答,那會很好。 –

回答

0

所以這裏有一些裁判我在AOSP docs發現:

內存緩存中加快訪問最近查看 位圖是有用的,但你不能依賴於圖像在此 緩存可用。具有較大數據集的像GridView這樣的組件可以輕鬆填充內存緩存中的 。您的應用程序可能會被另一個 任務打斷,並且在後臺可能會中止 ,並且內存緩存被破壞。一旦用戶恢復,您的應用程序必須再次處理每個圖像。

磁盤高速緩存可以在這些情況下被用來處理持久位圖 並有助於減少加載時間如果照片不再在內存高速緩存可 。當然,從磁盤讀取圖像比從內存中加載 要慢,並且應該在後臺線程中完成,因爲讀取次數可能無法預測。

相關問題