Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.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 安卓4.0的内存问题_Android_Memory_Layout - Fatal编程技术网

Android 安卓4.0的内存问题

Android 安卓4.0的内存问题,android,memory,layout,Android,Memory,Layout,一开始,我用2.2开发了一个Android应用程序。它可以在2.2或3.2版本的手机或平板电脑上正常工作 但现在我已经用4.0.3在手机上试过了。有两个问题我还不能找到解决方案 内存不足问题:它表示内存不足,然后崩溃。我还没有在2.2上面对它。 事实上,我只是在布局xml中设置了这些图像。我不确定2.2和4.0的区别是什么 布局问题。布局错误。我使用xml文件来设置图像的位置和大小。 我不知道为什么它不起作用,特别是字体大小,数值部分的数字。 它们与我在安卓2.2上看到的完全不同 问题一: 这不

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

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

  • 内存不足问题:它表示内存不足,然后崩溃。我还没有在2.2上面对它。 事实上,我只是在布局xml中设置了这些图像。我不确定2.2和4.0的区别是什么

  • 布局问题。布局错误。我使用xml文件来设置图像的位置和大小。 我不知道为什么它不起作用,特别是字体大小,数值部分的数字。 它们与我在安卓2.2上看到的完全不同

  • 问题一:

    这不是
    2.2-4.0
    的问题,而是手机内存的差异。根据给定的信息,我只能说以下几点:)还可以看看:

    问题二:

    这就是为什么您建议使用
    布局
    ,并且从不进行绝对定位(我强烈怀疑您这样做了)

    看看:

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

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


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

    我也遇到了同样的问题。 我怀疑这与硬件加速有关。从3.x开始(不确定确切时间),默认情况下会启用硬件加速。在处理图形时,这似乎会导致很多问题(例如,不能在打开硬件加速的情况下使用clip)

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


    我刚刚发现我的应用程序有什么问题,希望你也有同样的问题

    尝试将资源重新定位到相应的可绘制文件夹(可绘制mdpi、hdpi等)。显然,drawable文件夹默认为drawable mdpi,dpi较高的设备将扩展资源并将其加载,导致资源映像比预期的要大。
    在我的例子中,我所有的尺寸都只有一个,所以我把像背景这样的大图像放进了可绘制的nodpi中,我不再出现OOM错误。希望这有帮助

    谢谢你的解决方案。我在同一台设备上试用了2.3和4.0。为什么在2.3上没有内存问题,但在4.0上却发生了内存问题?所以我想知道4.0是否有任何变化?@AlanLee我不知道为什么,让其他人回答:)谢谢你的建议。实际上,我正在尝试使用ddms。我创建了一个新的活动,当Galaxy Note上只有hello world和4.0.3时,它已经有16MB了。我仍在关注这个问题。对于我的应用程序,如果它运行在2.3 Galaxy S上,只需要分配2.79MB。但值得注意的是,4.0.3一开始是54MB。它是相同的代码、相同的布局和图像。我已经研究了hprof,它主要来自byte[]和android.graphic.Bitmap.><我将尝试。但我也发现一个奇怪的事情,如果我得到图像的高度,它会给我原来高度的两倍。对于布局,它们都使用dp,包装内容或填充父项和所有相关布局我已经找到了原因,但我不是100%确定。这是因为我在Notes版本中使用了可绘制的大xhdpi。它可以在2.X中使用,但在ICS 4.0中,它无法进入此文件夹。然后它会放大默认的图像,从而导致内存问题和布局问题。顺便说一句,我仍然需要进行更多的测试以确定这是问题所在。下面是关于我的问题的更多细节。