Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在emulator中导致NullPointerException的大图像_Android - Fatal编程技术网

Android 在emulator中导致NullPointerException的大图像

Android 在emulator中导致NullPointerException的大图像,android,Android,我在绘制大图像时遇到模拟器崩溃的问题。崩溃是由在我的drawable上使用setBounds时出现的NullPointerException引起的(因此我的drawable出于某种原因为null) 问题只发生在模拟器中,如果我将其加载到我的设备(HTC Desire)上,则不会发生 我的图像是1080x1658像素jpg。如果我指定一个更小的图像,问题就会消失 我的代码如下所示: public class Map { private Drawable mapImage; pu

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

}

您是否检查了应用程序的堆是否太大?您可以在eclipse上使用DDMS实现这一点。 这样大小的图像可能会导致大问题

此外,一定要回收旧位图,为新位图腾出空间——它们是安卓系统中最有问题的东西之一


您也可以在设置中增加仿真器的堆大小,但这并不代表实际情况,因为许多设备只有大约32 mb的堆。

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


类似的问题:

我猜更大的堆大小将有助于他的应用程序,但不能反映现实情况,因为很多设备的堆大小只有32 mb左右。Tim,Mat,你需要确保对较小的设备使用较小的图像,以便它不会超过该设备的堆大小。如果您只需要解决当前emulator的问题,现在可以增加堆大小。在emulator中增加我的堆大小似乎并不能“解决”这个问题。虚拟机仍然崩溃。是否有关于内存中图像大小(和格式)差异的文档?您好,我尝试在eclipse的DDMS透视图中查看堆大小,但由于虚拟机崩溃,进程在我看到堆大小之前就关闭了(当我打开带有大图像的活动时)。然而,我有另一个应用程序共享代码库,但使用了较小的图像(900x952),该应用程序不会崩溃,并且从我所知道的情况来看,该应用程序中的堆从未超过6070MB,所以我猜我在模拟器的默认24MB范围内?