有時隨機啓動時,Volley會崩潰我的應用程序,它將在應用程序類中崩潰,並且用戶將無法再次打開該應用程序,直到它們進入設置並清除應用程序數據凌亂的內存錯誤,奇怪的分配嘗試
java.lang.OutOfMemoryError
at com.android.volley.toolbox.DiskBasedCache.streamToBytes(DiskBasedCache.java:316)
at com.android.volley.toolbox.DiskBasedCache.readString(DiskBasedCache.java:526)
at com.android.volley.toolbox.DiskBasedCache.readStringStringMap(DiskBasedCache.java:549)
at com.android.volley.toolbox.DiskBasedCache$CacheHeader.readHeader(DiskBasedCache.java:392)
at com.android.volley.toolbox.DiskBasedCache.initialize(DiskBasedCache.java:155)
at com.android.volley.CacheDispatcher.run(CacheDispatcher.java:84)
的「diskbasedbache」試圖分配超過1 GB內存,沒有明顯的理由
我會怎麼做這不會發生?這似乎是Volley的問題,也可能是基於自定義磁盤的緩存問題,但我並不立即看到(從堆棧跟蹤)如何「清除」此緩存或進行有條件檢查或處理此異常
洞察鑑賞
好,因此應用程序類第一次打開時,我可以清除該緩存,或者在我的主要活動..我得檢查基於磁盤的緩存文件 – CQM
這是有益的,但事實證明,一個我的第三方庫也正在初始化一個新的Volley請求,我讓他們改變他們的庫 – CQM
如果你確定某些請求會佔用大量數據,你可以通過Request.setShouldCache(false)來抑制這些請求不要緩存它。方法。 – VinceStyling