Volley導致內存泄露

在一次使用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;
}

用了上面這個庫之後,在去檢測,已經沒有發現內存泄露了

發佈了35 篇原創文章 · 獲贊 48 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章