有时随机启动时,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