【发布时间】:2011-04-30 16:29:54
【问题描述】:
我遇到了内存问题,我认为这可能与创建大型位图有关。
手头的任务是获取一个相当小的平铺图像并创建一个更大的平铺图像并将其设置为手机壁纸。我这样做的方式是:
1) 创建一个 2 * 屏幕宽度,1 * 屏幕高度的视图
2) 将视图背景设置为 BitmapDrawable,平铺模式设置为重复
3) 创建具有视图尺寸的位图
4) 将视图绘制到位图上:view.draw(new Canvas(bitmap))
5) 设置壁纸:getApplicationContext().setWallpaper(bitmap)
这在我的手机 (HTC Magic) 和我尝试过的其他手机上运行良好。但是我收到了与此问题相关的错误报告。我试图通过将所需尺寸加倍来重新创建问题,当视图被绘制到位图时,问题似乎发生在第四步:
ERROR/dalvikvm-heap(124):需要堆按摩(7372800 字节外部分配太大)
我不确定如何解决这个问题。请帮忙! 谢谢
【问题讨论】:
-
自 Android 4.0 以来,提供了更好的调试可能性,因为用于位图分配的内存现在被正确列为 DDMS 中堆监视器中使用的内存。在 4.0 之前,用于位图分配的内存没有显示在堆监视器中,因此只能猜测实际使用了多少内存。也许这可以帮助您更好地调试代码。
标签: android memory views bitmap