Bitmap的如何避免OOM

最近在所項目的的項目的,由於項目要求7*24無間斷的運行,這就出現了一個讓我很頭疼的問題。就是的買到項目運行70個小時左右就是因爲OOM而造成App的閃退;

一開始的時候是直接判斷bitmap是不是的等於null,不等於的時候就釋放掉:

              if (mBit !=null) {
                  mBit.recycle();
                    mBit=null;
}

可是測試後才發現還是沒有用:我查了一下資料說是Bitmap是一個私有類,不是的直接new出來的是,而是BitmapFactory.decodeFile()得來的,單單釋放掉還是沒有用,想要不出現這份問題就是要在你程序推出的時候直接清空你程序所佔的內存,而由於的程序要7*24顯示運行,想要不出現這個問題,就要在Bitmap釋放掉之後立即調用gc來清理:

// 先判斷是否已經回收

if(mBit != null && !mBit.isRecycled()){

    // 回收並且置爲null

    mBit.recycle();

    mBit = null;

}

System.gc();

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