在模拟器中导致NullPointerException的大图像

时间:2012-03-05 08:18:09

标签: android

我在绘制大图像时遇到模拟器崩溃的问题。在我的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);
    }

}

2 个答案:

答案 0 :(得分:1)

您是否检查过您的应用程序堆是否太大了?你可以在eclipse上用DDMS做到这一点。 具有这种尺寸的图像可能会造成很大的问题。

此外,请务必回收旧的位图,为新的位图留出一些空间 - 它们是Android上最棘手的问题之一。

您也可以在设置中增加模拟器的堆大小 - 但这并不代表现实,因为许多设备只有大约32 MB的堆。

答案 1 :(得分:1)

尝试将模拟器的最大VM应用程序堆大小增加到更高的值,您可以单击编辑并更改AVD的此值。基本上这会增加分配给模拟器上每个进程的内存量,请注意,默认情况下,这会在您的实际设备上设置为更高的值。

enter image description here

类似问题:http://androidforums.com/application-development/48495-memory-size-emulator.html