在一次使用Android Monitor爲項目做內存泄露分析的時候,發現Volley會造成內存泄露
通過上圖可以看到是因爲StringRequest的兩個請求回調接口占用造成的Activity內存泄露,經過查找資料發現是因爲Volley的bug造成的
解決辦法:改用 https://github.com/mcxiaoke/android-volley
通過對這個庫的簡單研究,發現與google的Volley相比,在Request類中添加了下面的代碼:
/**
* clear listeners when finished
*/
protected void onFinish() {
mErrorListener = null;
}
從上面的代碼可以看到在finish的時候釋放mErrorListener 。而在StringRequest重寫這個方法,當finish的時候釋放mListener,代碼如下:
@Override
protected void onFinish() {
super.onFinish();
mListener = null;
}
用了上面這個庫之後,在去檢測,已經沒有發現內存泄露了