2

一开始我曾使用 2.2 开发过一个 Android 应用程序。它可以在 2.2 或 3.2 的手机或平板电脑上正常工作。

但是现在我已经在4.0.3的手机上试过了。有两个问题我还没有找到解决方案。

  1. 内存不足问题:它说内存不足然后崩溃。我在2.2上没有遇到过。实际上,我只是在布局 xml 中设置了这些图像。我不确定 2.2 和 4.0 有什么区别。

  2. 布局问题。布局不对。我使用 xml 文件来设置图像的位置和大小。我不知道为什么它不起作用,尤其是字体大小,值部分中的数字。它们与我在 android 2.2 上看到的完全不同

4

3 回答 3

1

问题一:

这不是2.2 - 4.0问题,而是手机的内存差异。有了给定的信息,这就是我能说的 :) 也看看:避免内存泄漏

问题二:

这就是为什么你建议使用 aLayout并且永远不要做绝对定位(我强烈怀疑你做了)!

看一下 :

  1. XML 布局
  2. 支持多屏
于 2012-05-04T06:46:25.630 回答
0

1)您应该在ddms或任何其他 eclipse 工具的帮助下,在 2.2 和 4.0 中监控应用程序中的内存和对象实例的数量。关于 Android 应用程序的内存分配,Android最初为每个应用程序分配一些堆内存(例如 4MB)用于运行应用程序,并且它还为每个应用程序设置了最大内存分配限制(例如 16MB)。如果应用程序需要更多最初分配的内存,它会在运行时扩展分配(即从 4MB 到 6MB 或 8MB 或更多,具体取决于要求)到最大内存(例如 16MB)。如果 App 需要比 Max Memory 更多的内存,则会发生OutOfMemoryError您可以在运行时的帮助下监控最大内存和可用内存类和调试类。

2) 对于布局问题,永远不要使用像素值,始终使用 Dp 值,永远不要使用绝对布局。

为不同分辨率的设备使用九个补丁图像。

于 2012-05-05T15:33:59.897 回答
0

我遇到了同样的问题。我怀疑它与硬件加速有关。从 3.x 开始(不确定具体是什么时候)硬件加速默认开启。在处理图形时,这似乎会导致很多问题(例如,您不能在启用硬件加速的情况下使用剪辑)。

抱歉,它不是一个完整的答案,但认为它可能会帮助您搜索答案。


我实际上只是弄清楚了我的应用程序的问题所在,并希望您遇到同样的问题。

尝试将您的资源重新定位到相应的可绘制文件夹(drawable-mdpi、hdpi 等)。显然drawable文件夹默认为drawable-mdpi,具有更高dpi的设备将扩展资源并将其加载,导致资源图像比您预期的要大。在我的情况下,我只有 1 个尺寸,所以我将我的大图像(如背景)放入 drawable-nodpi 中,并且我不再收到 OOM 错误。希望这可以帮助!

于 2012-05-15T11:41:59.210 回答