Eclipse的MAT显示内存泄漏是由于凌空NetworkDispatcher和CacheDispatcher
问题描述:
Eclipse的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;
}
});
取决于你如何请求队列被管理,你可以做同样的事情。问题在于,当队列停止时,请求会留在队列中,并且永远不会清理。因此,无论您在何处启动/停止队列,都需要格外小心以取消任何未完成的请求。
是绝对正确我应该取消我的请求。 但问题是我应该使用单例模式。 我也会应用你的建议,也非常感谢 –
啊哈,是的,这也会导致这个问题可见。 – Turnsole
如果你有任何想法如何解决这个http://stackoverflow.com/questions/38964271/android-volley-singleton-pattern-how-to-add-cancel-requests-based-on-tag,所以我可以取消我的要求 –