0

我正在尝试使用以下代码截取屏幕截图:

final View rootView = getRootView();
rootView.setDrawingCacheEnabled(true);
Bitmap bmp = Bitmap.createBitmap(rootView.getDrawingCache());
rootView.setDrawingCacheEnabled(false);

捕获后,我将屏幕截图存储在ArrayList<Bitmap>.

mReporter.addBitmap(bmp);

问题是,每次执行整个过程时,堆都会大量增长。如何避免堆变得太大?

我的日志显示此信息可能会有所帮助:

05-08 20:11:48.443: I/dalvikvm-heap(18497): Grow heap (frag case) to 31.288MB for 6819856-byte allocation

编辑:

我在 ArrayList 中最多存储 3 个图像

4

2 回答 2

2

为什么你不期望堆增长?您为每个屏幕截图存储了大量信息。如果要避免堆增长,则需要将图像写入 SD 卡或其他存储设备。

于 2013-05-08T15:14:55.657 回答
1

你不能。每次在ArrayList. 您可以downsampling选择您bitmap的 s,也可以只在您的ArrayList

于 2013-05-08T15:13:25.690 回答