我正在尝试使用以下代码截取屏幕截图:
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张图像
答案 0 :(得分:2)
为什么你不期望堆增长?您为每个屏幕捕获存储了大量信息。如果要避免堆增长,则需要将映像写入SD卡或其他存储。
答案 1 :(得分:1)
ArrayList
内存储新位图时。您可以downsampling
bitmap
或ArrayList
只保留少量位图