我一直在做一些调试,最后来到某条线,导致我的应用程序使RAM使用量增加四倍。这是我片段中的一行:
@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_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/back"
android:layout_width="match_parent"
android:layout_height="60dp"
android:clipToPadding="false"
android:minHeight="60dp"
android:orientation="horizontal"
android:paddingTop="60dp"
android:weightSum="100" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/back">
<RelativeLayout
android:id="@+id/menu"
android:layout_width="match_parent"
android:layout_height="120dp"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="120dp">
<LinearLayout
android:id="@+id/colorsbg"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentTop="true"
android:clipToPadding="false"
android:elevation="8dp"
android:minHeight="60dp"
android:orientation="horizontal"
android:weightSum="100">
<TextView
android:id="@+id/totalupvotes"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_weight="25"
android:gravity="center"
android:text="4022"
android:textColor="#fff"
android:textSize="22sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/save"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_weight="25"
android:background="@drawable/starbackgroundbig"
android:gravity="center"
android:padding="13dp"
android:scaleType="fitCenter"
android:src="@drawable/staricon"
/>
<ImageView
android:id="@+id/upvote"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_weight="25"
android:background="@drawable/upvotebackgroundbig"
android:gravity="center"
android:padding="13dp"
android:scaleType="fitCenter"
android:src="@drawable/upvoteicon"
/>
<ImageView
android:id="@+id/downvote"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_weight="25"
android:background="@drawable/downvotebackgroundbig"
android:gravity="center"
android:padding="13dp"
android:scaleType="fitCenter"
android:src="@drawable/downvoteicon"
/>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layoutright"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentBottom="true"
android:orientation="vertical"
android:paddingBottom="0dp"
android:paddingStart="20dp"
android:scrollbars="none">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:text="Loading replies..."
android:textColor="#fff"
android:textSize="20sp"
android:textStyle="bold">
</TextView>
</LinearLayout>
<LinearLayout
android:id="@+id/subscribebg"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="0dp"
android:paddingEnd="20dp"
android:scrollbars="none">
<ToggleButton
android:id="@+id/toggleama"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#00000000"
android:textAlignment="center"
android:textOff="ENABLE AMA MODE"
android:textOn="DISABLE AMA MODE" />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
<ListView
android:id="@+id/commentsList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff141414"
android:orientation="vertical" />
<com.melnykov.fab.FloatingActionButton xmlns:fab="http://schemas.android.com/apk/res-auto"
android:id="@+id/commentreply"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_gravity="bottom|end"
android:layout_marginBottom="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:gravity="bottom|end"
android:scaleType="fitCenter"
android:src="@drawable/reply"
fab:fab_colorNormal="#E64A19"
fab:fab_colorPressed="#ffb94018"
fab:fab_colorRipple="#ffb23717" />
</RelativeLayout>
<ProgressBar
android:id="@+id/progressloading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:indeterminate="true" />
什么会导致此视图使用如此多的内存?我错了吗?
修改 以下是downvotebackgroundbig的XML文件,等等。
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/clearbg" />
<item android:drawable="@drawable/redbig" />
</transition>
和redbig
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#F34235" />
</shape>
答案 0 :(得分:1)
我遇到了同样的问题。在我的情况下,图像加载导致了问题。你在布局中使用的图像有多大?
答案 1 :(得分:1)
您正在为视图充气,但您的视图包含ImageView
。图像占用大量内存,远远超过磁盘/存储。发生这种情况是因为图像在磁盘上时会被压缩(以JPG,PNG或类似格式存储)。将图像加载到内存后,它不再被压缩并占用所有像素所需的内存(通常为RGBA_8888的宽度*高度* 4,或RGB_565的宽度*高度* 2)。我敢打赌,这是内存使用量增加的原因。