com.android.volley.toolbox.DiskBasedCache.streamToBytes異常

最近使用volley加載網絡圖片,可是卻時常發生以下問題:

EXCEPTION TYPE: java.lang.OutOfMemoryError

EXCEPTION MSG: Failed to allocate a 1667591281 byte allocation with 4194304 free bytes and 296MB until OOM

EXCEPTION STACK:

    com.android.volley.toolbox.DiskBasedCache.streamToBytes(DiskBasedCache.java:316)
    com.android.volley.toolbox.DiskBasedCache.readString(DiskBasedCache.java:526)
    com.android.volley.toolbox.DiskBasedCache.readStringStringMap(DiskBasedCache.java:548)
    com.android.volley.toolbox.DiskBasedCache$CacheHeader.readHeader(DiskBasedCache.java:392)
    com.android.volley.toolbox.DiskBasedCache.initialize(DiskBasedCache.java:155)
    com.android.volley.CacheDispatcher.run(CacheDispatcher.java:84)

解決辦法:volley本來就不建議用來緩存太多的數據。遇到這種情況,目前的最好的解決方案貌似只有暴力清理緩存。
在獲取請求隊列的時候,拿到DiskBasedCache的引用,然後通過ClearCacheRequest來清理掉volley的緩存。
實例代碼見第一代碼原創文章http://www.diyidaima.com/article/detail/rshdot08

發佈了29 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章