最近使用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