我在绘制大图像时遇到模拟器崩溃的问题。在我的drawable上使用setBounds时,崩溃是由NullPointerException引起的(因此我的drawable由于某种原因为null)。
问题只发生在模拟器中,而不是我将其加载到我的设备(HTC Desire)上。
我的图片是1080x1658像素的jpg。如果我指定一个小得多的图像,问题就会消失。
我的代码如下所示:
public class Map {
private Drawable mapImage;
public Map(Context context) {
mapImage = context.getResources().getDrawable(R.drawable.north);
}
public void render(Canvas canvas) {
mapImage.setBounds(0, 0, 1080, 1658);
mapImage.draw(canvas);
}
}
答案 0 :(得分:1)
您是否检查过您的应用程序堆是否太大了?你可以在eclipse上用DDMS做到这一点。 具有这种尺寸的图像可能会造成很大的问题。
此外,请务必回收旧的位图,为新的位图留出一些空间 - 它们是Android上最棘手的问题之一。
您也可以在设置中增加模拟器的堆大小 - 但这并不代表现实,因为许多设备只有大约32 MB的堆。
答案 1 :(得分:1)
尝试将模拟器的最大VM应用程序堆大小增加到更高的值,您可以单击编辑并更改AVD的此值。基本上这会增加分配给模拟器上每个进程的内存量,请注意,默认情况下,这会在您的实际设备上设置为更高的值。
类似问题:http://androidforums.com/application-development/48495-memory-size-emulator.html