Issue
I am doing android app, works fine in a device with 3Gb Ram but bad in a device with 512 mbRam. I am getting error "bitmap size exceeds VM budget" I don´t know how solve it. This is my layout´s code that uses many drawables.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/fondohis"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#333"
android:gravity="bottom"
android:orientation="vertical" >
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
<LinearLayout
android:id="@+id/container_2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/fondo_menu"
android:orientation="vertical" >
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/transparent_negro"
android:scrollbars="none" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical" >
<ImageView
android:id="@+id/image_episodio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/athle" />
<TextView
android:id="@+id/episodio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Los orígenes"
android:textColor="#FFFFFF" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical" >
<ImageView
android:id="@+id/image_episodio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/pentl" />
<TextView
android:id="@+id/episodio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Primera"
android:textColor="#FFFFFF" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:orientation="vertical"
android:gravity="center_vertical|center_horizontal" >
<ImageView
android:id="@+id/image_episodio3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/delant" />
<TextView
android:id="@+id/episodio3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Segund"
android:textColor="#FFFFFF" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:orientation="vertical"
android:gravity="center_vertical|center_horizontal">
<ImageView
android:id="@+id/image_episodio4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/cambios_mini" />
<TextView
android:id="@+id/episodio4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="É"
android:textColor="#FFFFFF" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:orientation="vertical"
android:gravity="center_vertical|center_horizontal" >
<ImageView
android:id="@+id/image_episodio5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/niev" />
<TextView
android:id="@+id/episodio5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Debut"
android:textColor="#FFFFFF" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:orientation="vertical"
android:gravity="center_vertical|center_horizontal" >
<ImageView
android:id="@+id/image_episodio6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/aldeanos" />
<TextView
android:id="@+id/episodio6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="La"
android:textColor="#FFFFFF" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:orientation="vertical"
android:gravity="center_vertical|center_horizontal" >
<ImageView
android:id="@+id/image_episodio7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ir" />
<TextView
android:id="@+id/episodio7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ss"
android:textColor="#FFFFFF" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:orientation="vertical"
android:gravity="center_vertical|center_horizontal">
<ImageView
android:id="@+id/image_episodio8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/fin" />
<TextView
android:id="@+id/episodio8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="kk"
android:textColor="#FFFFFF"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical" >
<ImageView
android:id="@+id/image_episodio9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/gaba" />
<TextView
android:id="@+id/episodio9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="em"
android:textColor="#FFFFFF" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical" >
<ImageView
android:id="@+id/image_episodio10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/bie" />
<TextView
android:id="@+id/episodio10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="yy"
android:textColor="#FFFFFF"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
<LinearLayout
android:id="@+id/container_iribar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/fondohis"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/historiacuatro" />
</LinearLayout>
<LinearLayout
android:id="@+id/container_zarra"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/fondohis"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/historiatres" />
</LinearLayout>
<LinearLayout
android:id="@+id/container_pichichi"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/fondohis"
android:gravity="right|center_vertical"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/historiados" />
</LinearLayout>
<LinearLayout
android:id="@+id/container_histo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/fondohis"
android:gravity="bottom|left"
android:orientation="vertical" >
<ImageView
android:id="@+id/icono_comentario"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/historiauno" />
</LinearLayout>
<LinearLayout
android:id="@+id/menu_capa"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerVertical="true"
android:background="@drawable/fondohis"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical" >
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:visibility="gone" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/transparent_negro"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical" >
<TextView
android:id="@+id/titulo_portada"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/circle"
android:text="Gure"
android:textColor="#FFFFFF"
android:textSize="50sp" />
<TextView
android:id="@+id/titulo_anos"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:textColor="#ffffff"
android:textSize="40sp" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
I have using this that I have read in other questions but I can´t solve it:
@Override
protected void onDestroy() {
super.onDestroy();
unbindDrawables(findViewById(R.id.RootView));
System.gc();
}
private void unbindDrawables(View view) {
if (view.getBackground() != null) {
view.getBackground().setCallback(null);
}
if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
unbindDrawables(((ViewGroup) view).getChildAt(i));
}
((ViewGroup) view).removeAllViews();
}
}
Solution
1. For dealing with Bitmap
objects:
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 8;
options.inDither = false;
options.inPurgeable = true;
options.inInputShareable = true;
Bitmap bitmap = BitmapFactory.decodeStream(is, null, options);
Also, you need to use
bitmap.recycle();
before you make your Bitmap
instances null. This will help save memory.
2. For dealing with images in res/drawable
:
- Add the
android:largeHeap=“true”
attribute to theapplication
tag in your project's manifest file. - Resize your images with a graphics editor and reduce their size & dimension.
Note: One of the answers says that "This error will only be visible in logcat
, it won't affect your application." So yes, that is entirely false. An OutOfMemoryError
is a Java Error
, even more pernicious than a RuntimeException
. It will bring the app to its knees.
Answered By - Yash Sampat
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.