Android 充气视图导致使用柱塞时产生40mb的颠簸

Android 充气视图导致使用柱塞时产生40mb的颠簸,android,android-layout,memory,view,ram,Android,Android Layout,Memory,View,Ram,我一直在做一些调试,最后终于找到了一条导致我的应用程序内存使用率翻两番的路线。这是我的片段中的一行: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.comments, container, false); return v; }

我一直在做一些调试,最后终于找到了一条导致我的应用程序内存使用率翻两番的路线。这是我的片段中的一行:

 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
     View v = inflater.inflate(R.layout.comments, container, false);
     return v;
 }
R.layout.comments视图如下:

android:layout\u width=“match\u parent” android:layout\u height=“match\u parent” android:orientation=“vertical”>

是什么导致此视图使用如此多的内存?我是不是弄错了

编辑: 下面是downvotebackgroundbig等的XML文件

<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/clearbg" />
<item android:drawable="@drawable/redbig" />
</transition>

还有红比格

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#F34235" />
</shape>


我也有同样的问题。在我的例子中,图像加载导致了问题。您在布局中使用的图像有多大?

您正在按应有的方式放大视图,但视图包含一个
图像视图。图像占用大量内存,比磁盘/存储器占用的内存要多得多。这是因为图像在磁盘上时被压缩(以JPG、PNG或类似格式存储)。一旦将图像加载到内存中,它将不再被压缩,并占用所有像素所需的内存(对于RGBA_8888,通常为宽度*高度*4,对于RGB_565,通常为宽度*高度*2)。我敢打赌这是内存使用量增加的原因。

图像是可传输的可绘制图像。它们是xxxhdpi标准材质设计图标,每个只有大约400字节(48x48)。这些真的是问题吗?我以为这么小的东西对它影响不大。背景呢?downvotebackgroundbig-它甚至包含了big这个词:DIt只是一个填充背景的形状:(与'android:background=“@drawable/starbackgroundbig”有什么关系“好的,这些形状可能是个问题。如果你在android中制作一个形状,例如100×100的矩形,那么它实际上会创建一个这样大小的图像。这个形状到底有多大(边框)?我没有设置背景。我在不同的片段上有一个大的图像视图,但我只得到了用于此膨胀的巨大内存峰值。我在所有地方都进行了代码中断,最后将其缩小到该行。此片段位于水平视图寻呼机内的垂直视图寻呼机中,是第二个视图(第一个是图像和标题)。不幸的是,我根本没有窗口背景。这可能是相关的,但我做了一个完整的内存转储,一个900万字节长的数组(字节[9000000])占用了很大一部分ram所有的值-1Value-1基本上都是不透明的白色。对我来说,这听起来真的很像windowBackground。可能活动在打开时会短暂地闪烁白色。我也有过这种情况。你可以尝试将@null添加到你使用的样式中吗?呵呵,也许你可以尝试将它设置为null两次以保存另一个15Mb:)
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#F34235" />
</shape>