簡體   English   中英

帶有自定義視圖的ICS中位圖分配的可用內存

[英]Free memory allocated by Bitmap in ICS with Custom View

1.我正在使用自定義視圖。

2.我已經在“活動”中實現了此自定義視圖。

3.我正在完成活動並重新創建多個時間。

  1. 因此,它正在重新分配內存以創建位圖。

  2. 如何確保每次都不會重新分配新的內存。

  3. 如何重用或釋放已分配給位圖的內存。

我想擺脫由於Bitmap造成內存泄漏

if (cachedBitmap == null){
  cachedBitmap = Bitmap.createBitmap(getWidth(),getHeight(), Config.ARGB_8888);
  cachedCanvas = new Canvas(cachedBitmap);
  transparentColor = new int[cachedBitmap.getWidth()*cachedBitmap.getHeight()];

  for(int i = 0 ; i < (int) 5 *1.5 * cachedBitmap.getHeight() ; i++) {
     transparentColor[i]  = Color.TRANSPARENT;
  }
}

drawStuff(cachedCanvas);  
canvas.drawBitmap(cachedBitmap, 0, 0, null);

在舊版Android中,位圖是一個本機對象,而不是駐留在Dalvik VM中。 就像您提到的那樣,這可能是關於內存泄漏的問題。 但是,您可以使用以下代碼自己釋放內存:

Bitmap bmp;    // your existing Bitmap
bmp.recycle(); // Clears the bitmap from memory
bmp = null;    // Unset it to be sure

final boolean isRecycled = bmp.isRecycled(); // Can be run to check if the
                                             // Bitmap is cleared from memory

如果始終以這種方式清除位圖,則可以避免內存泄漏。 參考: http : //android.okhelp.cz/delete-bitmap-android-example/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM