Question

How do I release resources used in 1 activity? So I got 3 layouts and activity for each layout, but the problem is when I switch between those activities my app crashes and I get this: logcat

I started getting this error ever since I added adds to my application. My whole logcat http://i.imgur.com/t5G94dC.png

XML Layout:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#000000" >

      <ImageButton
          android:id="@+id/dugme2"
          android:layout_width="150dp"
          android:layout_height="90dp"
          android:layout_alignBottom="@+id/dugme1"
          android:layout_alignParentRight="true"
          android:background="#0000"
          android:onClick="onClick"
          android:scaleType="fitXY"
          android:src="@drawable/dragunov" />

      <ImageButton
          android:id="@+id/dugme5"
          android:layout_width="150dp"
          android:layout_height="90dp"
          android:layout_alignParentLeft="true"
          android:layout_alignTop="@+id/dugme6"
          android:background="#0000"
          android:onClick="onClick"
          android:scaleType="fitXY"
          android:src="@drawable/scout" />


      <SeekBar
          android:id="@+id/seekSnipers"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_alignParentTop="true"
          android:progressDrawable="@drawable/red_scrubber_progress"
          android:thumb="@drawable/red_scrubber_control" />

    <com.google.ads.AdView
            android:id="@+id/adView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            ads:adSize="BANNER"
            ads:adUnitId="ID"
            ads:loadAdOnCreate="true" >
            </com.google.ads.AdView>

</RelativeLayout>

It's pretty much same for other layouts as well, except for different resources and ID's. Ad code is same in every layout.

Was it helpful?

Solution

YOu can release resources by using the following code. This should be called in onDestroy() of u=your activity.

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();
        view.setBackgroundResource(0);
    }
}

More over to destroy activity you should call finish() after calling next activity.

OTHER TIPS

You should use OnStop() callback to release the resources that causing the memory leak. You should also use onStop() to perform relatively CPU-intensive shutdown operations.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top