我想用下面的代碼採取截圖:屏幕捕獲導致堆增長
final View rootView = getRootView();
rootView.setDrawingCacheEnabled(true);
Bitmap bmp = Bitmap.createBitmap(rootView.getDrawingCache());
rootView.setDrawingCacheEnabled(false);
一旦被捕獲,我保存的截圖在ArrayList<Bitmap>
。
mReporter.addBitmap(bmp);
問題是,每一次這個整個過程執行heap增長了大量。我怎樣才能避免堆太大?
我的日誌中顯示此信息可能會有所幫助:
05-08 20:11:48.443: I/dalvikvm-heap(18497): Grow heap (frag case) to 31.288MB for 6819856-byte allocation
編輯:
上午存儲3張圖像的最大的ArrayList中
在任何時間點都不會保留3個以上的位圖。我會嘗試下采樣:) – JeeZ 2013-05-08 15:15:30
它更好。請記住,每個位圖都需要widt x高度x 4個字節的內存。一張800x600位圖需要2MB大小。 – Blackbelt 2013-05-08 15:17:01
是真的,謝謝你的解決方案 – JeeZ 2013-05-08 15:18:56