屏幕捕获导致堆增长

时间:2013-05-08 15:10:44

标签: android screenshot

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

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张图像

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

你不能。每次在ArrayList内存储新位图时。您可以downsampling bitmapArrayList

只保留少量位图