Android 屏幕捕获导致堆增长

Android 屏幕捕获导致堆增长,android,screenshot,Android,Screenshot,我正在尝试使用下面的代码截图: final View rootView = getRootView(); rootView.setDrawingCacheEnabled(true); Bitmap bmp = Bitmap.createBitmap(rootView.getDrawingCache()); rootView.setDrawingCacheEnabled(false); 捕获后,我将截图存储在ArrayList中 问题是,每次执行整个过程时,堆都会大量增长。如何避免堆变得太大 我

我正在尝试使用下面的代码截图:

final View rootView = getRootView();
rootView.setDrawingCacheEnabled(true);
Bitmap bmp = Bitmap.createBitmap(rootView.getDrawingCache());
rootView.setDrawingCacheEnabled(false);
捕获后,我将截图存储在
ArrayList

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

我的日志显示了以下信息,这些信息可能会有所帮助:

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


我最多在ArrayList中存储3个图像,您不能。每次在
ArrayList
中存储新位图时。您可以对
位图进行
下采样
,也可以在
阵列列表中只保留少量位图

。每次在
ArrayList
中存储新位图时。您可以对
位图进行
下采样
,也可以在
数组列表中只保留少量位图
为什么不希望堆增长?您正在为每个屏幕捕获存储大量信息。如果要避免堆增长,则需要将映像写入SD卡或其他存储设备。

为什么不希望堆增长?您正在为每个屏幕捕获存储大量信息。如果要避免堆增长,需要将图像写入SD卡或其他存储器。

在任何时候,我都不会保留超过3个位图。我会尝试下采样:)这样更好。请记住,每个位图都需要widt x height x 4字节的内存。800x600位图将需要2MB ca。在任何时间点,我都不会保留超过3个位图。我会尝试下采样:)这样更好。请记住,每个位图都需要widt x height x 4字节的内存。800x600位图需要2MB ca。
05-08 20:11:48.443: I/dalvikvm-heap(18497): Grow heap (frag case) to 31.288MB for 6819856-byte allocation