可以在drawable-nodpi文件夹中存储大图像会导致OutOfMemory异常

时间:2014-10-30 13:40:37

标签: android image out-of-memory

我在考虑将所有图像存储在drawable-nodpi文件夹中,而不是在drawable-ldpi,mdpi等中存储不同大小的图像是一种好习惯。

让我说我把所有图像保存在drawavle-nodpi中。图像尺寸至少为720x1280。我在屏幕分辨率为240x320的设备上运行我的应用程序。它将如何处理drawable-nodpi中的图像。这些图像是在运行时缩小还是按原样显示。它会导致OOM异常吗?我认为,如果将这些大图像加载到内存中,它们可能会导致OOM,因为具有小屏幕的设备通常具有较少的RAM和堆大小,但我不确定。看起来将所有图像存储在drawavle-nodpi中会使开发人员的生活变得更加容易。

3 个答案:

答案 0 :(得分:1)

  

这些图像会在运行时缩小,还是会缩小?   显示为它们。

不,他们不是。它们将以独立的密度方式加载。它们将显示为

 Can it cause OOM exceptions?
当然,这主要取决于两个因素。前者是设备的(应用程序)堆,后者是这些图像的大小以及你在ram中保留的数量

答案 1 :(得分:0)

它将是每个设备中的每像素像素,因此它不会缩小或缩小,因此在小型设备中图像会很大,而在平板电脑中,它会很小。

使用ldpi,mdpi,hdpi,xhdpi等的目的是图像在不同的屏幕上具有合理的相似大小。

关于内存,它可能会导致小型设备中出现内存问题,而大型设备中没有内存问题,因为分配的内存是针对文件的缩放版本而不是文件本身,放入nodpi会使其分配文件本身,因为它将是每1比率1。

答案 2 :(得分:0)

我认为问题将是资源(图像)的总内存以及(试图)试图显示巨大图像的图像视图时的性能。根据我的经验,创建一个小尺寸图像到多个屏幕是更多的内存和性能明智。只是为了提示,您可以使用自动缩放器:https://code.google.com/p/9patch-resizer/

对于异常,我从来没有得到那个例外,但我认为如果图像非常庞大,很有可能获得OOM。