我正在嘗試構建從我的應用程序緩存從網絡下載的圖像的最有效方式,幾年前我試圖做到這一點,並找不到一個有效的方法來做到這一點工作,直到我偶然發現了lazylist適配器在這裏找到:Android最佳的緩存圖像方式
Lazy load of images in ListView
這個工作順利,直到Android 4.0的推出,在這一點上裝載10至20幅圖像後的應用程序會崩潰,因爲之前在那裏我可以反對簡單地加載儘可能多的,我沒有任何問題,我後來發現是冰淇淋三明治的結果限制每個應用程序的內存使用量,這並不存在薑餅2.3和低,我最終決定清除緩存每10左右的圖像,以避免崩潰,但用戶體驗不是很好,因爲這樣做和應用程序使用大量的數據,因爲它不斷地重新下載圖像再次,已經看過,我自那以後試圖使用lru緩存,但這似乎並沒有工作,尤其是當我離開應用程序並重新啓動它的圖像都釋放似乎,我需要一個更好的方式做到這一點並且我注意到其他應用程序(例如instagram)似乎已經找到了緩存數百兆圖像的方法,Im始終必須在我的設置中手動清除instagram緩存,因爲它似乎能夠存儲無限大小的緩存看起來從不彈出其內容,有誰知道如何建立這種緩存?
「我後來發現這是冰淇淋三明治對每個應用程序的內存使用量設置了限制的結果,這在Gingerbread 2.3和更低版本中並不存在」 - 是的,它確實存在。 – CommonsWare
如果這是這種情況,爲什麼當我的手機從2.3更新爲40時,突然無法在該緩存中存儲許多圖像? –
我無法知道。你顯然也不這樣做,因爲你似乎沒有打擾過使用DDMS和MAT來確定你的內存問題的根源。但是,您關於內存使用情況的說法不正確。自從Android 1.0以來,Android的堆大小限制已經有了。基於屏幕分辨率和操作系統版本,它們從最初的16MB限制增加。 – CommonsWare