Eclipse的MAT显示内存泄漏是由于凌空NetworkDispatcher和CacheDispatcher

问题描述:

This is excluding weak referencesEclipse的MAT显示内存泄漏是由于凌空NetworkDispatcher和CacheDispatcher

我是新来的MAT,以及如何检测和删除泄漏,但为什么是我所有泄漏的背后凌空?

我该如何解决这个问题?

的问题是我没有使用Singleton模式我RequestQueues https://developer.android.com/training/volley/requestqueue.html#singleton 这个环节解决我的问题

而且@Turnsole的建议是实心的,一定会取消请求时,我不知道需要他们

运行自动化测试时,我发现同样的问题,它会重复背景/重新绘制应用程序。我的解决方案(从而解决了至少运行测试的问题)是这样做的拆解():

// cancel() for each request will get them removed, which can otherwise leak memory 
    MyApplication.getRequestQueue().cancelAll(new RequestQueue.RequestFilter() { 
     @Override 
     public boolean apply(Request<?> request) { 
      return true; 
     } 
    }); 

取决于你如何请求队列被管理,你可以做同样的事情。问题在于,当队列停止时,请求会留在队列中,并且永远不会清理。因此,无论您在何处启动/停止队列,都需要格外小心以取消任何未完成的请求。

+0

是绝对正确我应该取消我的请求。 但问题是我应该使用单例模式。 我也会应用你的建议,也非常感谢 –

+0

啊哈,是的,这也会导致这个问题可见。 – Turnsole

+0

如果你有任何想法如何解决这个http://stackoverflow.com/questions/38964271/android-volley-singleton-pattern-how-to-add-cancel-requests-based-on-tag,所以我可以取消我的要求 –