Java 带有PNG和OutOfMemory异常的动态图像视图?

Java 带有PNG和OutOfMemory异常的动态图像视图?,java,android,imageview,out-of-memory,Java,Android,Imageview,Out Of Memory,我知道有很多问题已经用我的名字解决了,但是没有一个给我答案。以下是我的工作: 我有一个大的多维数组,其中包含项目,每个项目都有名称、图像路径和其他内容。我有一个列表视图,使用它们的名称列出了该数组中的所有项目,当我们单击其中一个项目时,它会打开一个新的活动,显示项目的详细信息和图像。它实际上可以工作,图像缩放良好,所有加载的内容都与用户的点击匹配,这部分是100%确定的 但在几次点击之后,我发现了内存异常。在我以前版本的应用程序中,没有图像,我可以点击一行中的所有项目,几乎100个项目,没有任何

我知道有很多问题已经用我的名字解决了,但是没有一个给我答案。以下是我的工作:

我有一个大的多维数组,其中包含项目,每个项目都有名称、图像路径和其他内容。我有一个列表视图,使用它们的名称列出了该数组中的所有项目,当我们单击其中一个项目时,它会打开一个新的活动,显示项目的详细信息和图像。它实际上可以工作,图像缩放良好,所有加载的内容都与用户的点击匹配,这部分是100%确定的

但在几次点击之后,我发现了内存异常。在我以前版本的应用程序中,没有图像,我可以点击一行中的所有项目,几乎100个项目,没有任何问题。现在有图像,并且内存不足异常。所以我认为图像就是问题所在。以下是我如何在单击后动态选择图像:

ItemArray items = new ItemArray(itemID); //clicked item ID to match with the array
        setContentView(R.layout.activity_show_item);
        ImageView itemImage = (ImageView) findViewById(R.id.itemImageView);
        Resources res = getResources();
        int resID = res.getIdentifier(items.ArrayToPrint[1], "drawable", getPackageName()); //ArrayToPrint = the selected lines matching the item, verification is made in the ItemArray class and is working properly
        itemImage.setImageResource(resID);
使用此代码,图像显示为我希望的样子。但正如我前面所说的,我从记忆异常中解脱出来了。我尝试了几种方法来刷新缓存,但都不起作用,我仍然遇到这个问题,不知道如何处理


有什么线索吗?提前谢谢

将所有可绘制内容移动到项目中res文件夹中的“可绘制nodpi”文件夹中可能会有所帮助。我知道它为我的应用程序释放了大量内存,该应用程序显示了大量的大PNG

当你说几次点击后,你在这些点击中做什么。还有,您正在显示的图像的大小当我单击列表中的一个项目时,我打开一个新活动,在参数中传递所选的项目ID,然后,在这个新活动中,我正在执行上面代码的目的,即获取并显示正确的图像。它们是1000*1000个PNG图像,但没有一个大于50kb。我试着用较小的图片,然后使它们更大以适应屏幕宽度,但这些图片上的文字无法阅读,这就是我拍摄较大图片的原因。文件大小并不意味着什么,当你加载一个尺寸为1000*1000的图像时,该图像总共占用了大约4mb的内存,因此如果你一次加载多个1000*1000图像到内存中,你可能会在点击几下后内存不足,加上PNG图像需要更多内存是的,这就是我的想法。所有图像都由同一ImageView调用,并且一次只能调用一个,然后用户单击“上一步”,并可以选择其他项目。这样,在将新图像加载到ImageView之前,无法立即清理内存?这是在listview中还是在其他地方?它们已经在这个可绘制的NodePI中,但它允许我再单击两次或三次,并且仍然会导致内存不足。。也许我应该尝试使用位图而不是直接打印PNG?你也可以尝试把这个添加到你的显式Android:LaGeHeAP=真,这不是正确的方法来解决你的内存问题,但是如果它给你更多的点击和仍然崩溃的内存,那么你应该考虑进一步缩小你的原始图像。