添加xlarge屏幕支持后出现内存不足

时间:2013-12-02 20:39:16

标签: android performance

我有一个已经存在超过2年的Android应用程序。我一直在努力地看着开发者控制台崩溃,应用从来没有遇到过问题。

但是,为了支持平板电脑,我修改了清单文件以包含对xlarge屏幕的支持。为了启用此值,我还将目标API级别从7更改为16.自发布这些更改后,我在开发人员控制台上看到“内存不足”的几次崩溃。没有进行其他代码更改,因此我确信配置更改至少间接导致崩溃。

在我的应用启动过程中,在视图充气期间,所有崩溃报告都有“引起:java.lang.OutOfMemoryError”。一些用户已经包含消息,指示应用程序在屏幕旋转期间和/或初始启动时崩溃。此外,崩溃报告中使用的设备都有xlarge屏幕(HTC One XL,Galaxy S4,Galaxy Note3等)。

1)为什么更改这些配置会导致内存不足?我的应用程序使用相同的图像,无论屏幕大小(我只有1组图像)。此外,一些用户已经确认该应用程序的旧版本在他们的设备上正常运行,因此我相信我的应用程序可以使用旧配置在大屏幕上运行。

2)当我尝试重现时,我无法启动1920x1080分辨率的模拟器。我试过我的Mac和我的Win-PC,但都没有启动。我在两台电脑上都有8GB的内存。任何较小的屏幕尺寸都可以很好地开始,例如1280x720(这些屏幕上的app工作正常)。此外,我尝试了GenyMotion和Android SDK模拟器但都失败了。如果没有购买其中一种设备,是否有人对如何模拟大屏幕设备有想法?

1 个答案:

答案 0 :(得分:1)

drawable相当于drawable-mdpi文件夹的文件夹 “one xl”,“S4”,“Note 3”和“Nexus5”等设备的分辨率为xhdpixxhdpi。 mdpi = 1x,xhdpi = 2x,xxhdpi = 3x,xxxhdpi = 4x。

现在,如果您有一个大图像(屏幕背景),请在尺寸为1280x720的可绘制文件夹中说明,并且您已使用xhdpi屏幕在设备上运行您的应用程序。 Android系统会将该图像乘以2来缩放该图像 xhdpi上的结果图像为2560x1440。和xxdpi上的3840x2160 正如您所看到的那些图像非常大并且需要巨大的内存大小,这会导致OutOfMemoryError异常。

我不确定为什么在将API级别更改为16后,但我认为在更新目标API后,您的应用程序开始支持这些屏幕密度。

<强>更新
我建议你把那些图像(大图像)放在drawabale-xhdpi和drawable-xxhdpi文件夹中。所以Android系统不会缩放图像。

相关问题