There is a bug in my application that is very hard to catch as it happens very few times (maybe once every 500 times I run the application on a real device). I have a couple custom views in the layout associated with the activity. In the setContentView() method of the activity I sometimes run into an OOME and I have no idea why?
It appears to be trying to inflate that view then from there it goes down hill. Because the problem rarely happens, is there a way I can handle this error or how can I avoid it? I am not understanding how the memory is used up in this case. Here is the stack trace
Process: com.android.wallfly, PID: 31817
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.wallfly/com.android.wallfly.Tabs.CreateEvent}: android.view.InflateException: Binary XML file line #738: Error inflating class <unknown>
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
at android.app.ActivityThread.access$900(ActivityThread.java:161)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #738: Error inflating class <unknown>
at android.view.LayoutInflater.createView(LayoutInflater.java:626)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:675)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:700)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:359)
at android.app.Activity.setContentView(Activity.java:2015)
at com.android.wallfly.Tabs.CreateEvent.onCreate(CreateEvent.java:337)
at android.app.Activity.performCreate(Activity.java:5431)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:600)
Caused by: java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:677)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:507)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:872)
at android.content.res.Resources.loadDrawable(Resources.java:3024)
at android.content.res.Resources.getDrawable(Resources.java:1586)
at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:176)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:973)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:913)
at android.content.res.Resources.loadDrawable(Resources.java:3006)
at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
at android.view.View.<init>(View.java:3694)
Here is the layout
<ViewFlipper
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/layoutsVF">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:background="#ff3a393c"
android:id="@+id/first"
android:visibility="visible">
<ImageView
android:layout_width="fill_parent"
android:layout_height="350dp"
android:layout_gravity="center"
android:id="@+id/eventPhoto"
android:layout_margin="5dp"
android:layout_centerInParent="true"
android:src="@drawable/galleryicon"
android:background="@drawable/rect_border" />
<TextView
android:layout_width="wrap_content"
android:layout_height="50dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Chose Photo"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:textSize="25dp"
android:textColor="@color/white"
android:background="#4C1995"
android:gravity="center|left"
android:paddingLeft="20dp"
android:layout_alignParentEnd="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="0.5dp"
android:text="New Text"
android:id="@+id/postedTimeTV"
android:layout_alignParentStart="true"
android:layout_below="@+id/textView"
android:layout_alignParentEnd="true"
android:background="#ff311760" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/confirmPhotoButton"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:src="@drawable/check_button_ab"
android:background="@drawable/ab_confirm_bckd"
android:layout_alignBottom="@+id/textView"
android:visibility="visible" />
<ImageView
android:layout_width="35dp"
android:layout_height="35dp"
android:id="@+id/whiteBackButton"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="35dp"
android:layout_marginLeft="15dp"
android:background="#fffbf8ff" />
<ImageView
android:layout_width="35dp"
android:layout_height="35dp"
android:id="@+id/blackBackButton"
android:background="#ff000000"
android:layout_alignTop="@+id/whiteBackButton"
android:layout_toRightOf="@+id/whiteBackButton"
android:layout_marginLeft="5dp" />
<ImageView
android:layout_width="35dp"
android:layout_height="35dp"
android:id="@+id/clearBackButton"
android:background="@drawable/rect_border"
android:layout_alignTop="@+id/blackBackButton"
android:layout_toRightOf="@+id/blackBackButton"
android:layout_marginLeft="5dp" />
</RelativeLayout>
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/second"
tools:context="com.android.wallfly.Tabs.CreateEvent"
android:visibility="visible">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/firstLayout" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:id="@+id/relativeLayout">
<com.android.wallfly.UI_utils.CircularProgressButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Submit"
android:id="@+id/submit"
android:layout_below="@+id/mapOne"
app:cpb_paddingProgress="5dp"
app:cpb_textComplete="@string/Complete"
app:cpb_textError="@string/Error"
app:cpb_textIdle="Post"
app:cpb_cornerRadius="5dp"
android:textColor="@android:color/white"
android:layout_marginTop="5dp"
android:layout_toRightOf="@+id/blueBadgedTV"
android:layout_alignRight="@+id/toButtonTime"
android:layout_alignEnd="@+id/toButtonTime"
android:layout_marginBottom="5dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Who"
android:id="@+id/textView9"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:textSize="15dp"
android:layout_marginTop="25dp"
android:layout_marginLeft="13dp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/divider4"
android:background="@drawable/divider"
android:layout_alignLeft="@+id/eventNameTV"
android:layout_alignStart="@+id/eventNameTV"
android:layout_below="@+id/textView9"
android:layout_alignRight="@+id/eventNameTV"
android:layout_alignEnd="@+id/eventNameTV"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/eventNameTV"
android:layout_below="@+id/linedivider"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:hint="Name your event..."
android:layout_marginLeft="7dp"
android:layout_marginRight="7dp"
android:textSize="10dp"
android:layout_marginTop="7dp"
android:gravity="center|center_vertical|center_horizontal"
android:singleLine="true"
android:imeOptions="actionDone"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/eventDescription"
android:layout_below="@+id/eventNameTV"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:hint="Description (Optional)"
android:layout_marginLeft="7dp"
android:layout_marginRight="7dp"
android:textSize="10dp"
android:layout_marginTop="7dp"
android:gravity="center|center_vertical|center_horizontal" />
<TextView
android:layout_width="wrap_content"
android:layout_height="30dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="F :"
android:id="@+id/blackBadgedTV"
android:layout_below="@+id/divider2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:gravity="center_vertical"
android:layout_marginLeft="13dp"
android:layout_marginTop="10dp"
android:textSize="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="30dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="T :"
android:id="@+id/blueBadgedTV"
android:layout_below="@+id/blackBadgedTV"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="10dp"
android:gravity="center_vertical"
android:layout_marginLeft="13dp"
android:textSize="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fromButtonDate"
android:layout_toRightOf="@+id/blackBadgedTV"
android:layout_above="@+id/blueBadgedTV"
android:textSize="10dp"
android:background="@drawable/setbutton"
android:layout_alignTop="@+id/blackBadgedTV"
android:layout_toLeftOf="@+id/space"
android:layout_marginLeft="10dp"
android:text="333333"
android:gravity="center_vertical|center_horizontal"
android:singleLine="true"
android:textAlignment="center"
android:textAppearance="@android:style/TextAppearance.Holo.Small"
android:paddingTop="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/toButtonDate"
android:layout_alignBottom="@+id/blueBadgedTV"
android:layout_toRightOf="@+id/blackBadgedTV"
android:layout_alignTop="@+id/blueBadgedTV"
android:textSize="10dp"
android:layout_alignRight="@+id/fromButtonDate"
android:layout_alignEnd="@+id/fromButtonDate"
android:background="@drawable/greenbutton"
android:layout_marginLeft="10dp"
android:text="333"
android:gravity="center"
android:paddingTop="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fromButtonTime"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignBottom="@+id/fromButtonDate"
android:layout_toRightOf="@+id/space"
android:layout_marginRight="25dp"
android:layout_marginLeft="3dp"
android:textSize="10dp"
android:layout_alignTop="@+id/fromButtonDate"
android:text="333"
android:gravity="center_vertical|center_horizontal"
android:paddingTop="10dp"
android:background="@drawable/setbutton" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="When"
android:id="@+id/planToAttendTV"
android:textSize="15dp"
android:layout_below="@+id/eventDescription"
android:layout_alignLeft="@+id/eventNameTV"
android:layout_alignStart="@+id/eventNameTV"
android:layout_marginLeft="5dp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/divider2"
android:layout_toLeftOf="@+id/space"
android:background="@drawable/divider"
android:layout_alignParentEnd="true"
android:layout_alignParentStart="true"
android:layout_below="@id/planToAttendTV"
android:layout_marginLeft="15dp"
android:layout_marginTop="4dp"
android:layout_marginRight="15dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Where"
android:id="@+id/addToCalendarButton"
android:textSize="15dp"
android:layout_below="@+id/toButtonTime"
android:layout_alignLeft="@+id/eventNameTV"
android:layout_alignStart="@+id/eventNameTV"
android:layout_marginLeft="5dp"
android:layout_marginTop="15dp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/divider3"
android:layout_toLeftOf="@+id/space"
android:background="@drawable/divider"
android:layout_alignParentEnd="true"
android:layout_alignParentStart="true"
android:layout_below="@id/addToCalendarButton"
android:layout_marginLeft="15dp"
android:layout_marginTop="4dp"
android:layout_marginRight="15dp" />
<ViewFlipper
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/divider3"
android:layout_alignLeft="@+id/linedivider"
android:layout_alignStart="@+id/linedivider"
android:layout_below="@+id/divider3"
android:layout_marginTop="10dp"
android:id="@+id/locationVF">
<EditText
android:layout_width="fill_parent"
android:layout_height="30dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/address"
android:textColor="@android:color/black"
android:textSize="14dp"
android:singleLine="true"
android:background="@android:color/transparent"
android:gravity="center|center_vertical|center_horizontal"
android:hint="Address or address alias"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="30dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/confirmedLocationTV"
android:textColor="@android:color/white"
android:textSize="14dp"
android:singleLine="true"
android:background="#ff00c004"
android:gravity="center|center_vertical|center_horizontal"
android:text="Confirmed!" />
</ViewFlipper>
<ViewFlipper
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/eventProfileVF"
android:layout_alignRight="@+id/fromButtonTime"
android:layout_alignEnd="@+id/fromButtonTime"
android:layout_toRightOf="@+id/blackBadgedTV"
android:layout_below="@+id/divider4"
android:layout_marginTop="10dp">
<Button
android:layout_width="match_parent"
android:layout_height="30dp"
android:id="@+id/profileButton"
android:layout_below="@+id/divider4"
android:gravity="center|center_vertical|center_horizontal"
android:text="Public"
android:textColor="@color/white"
android:background="@drawable/publicbadgebutton" />
<Button
android:layout_width="match_parent"
android:layout_height="30dp"
android:id="@+id/blackBadgeButton"
android:layout_below="@+id/divider4"
android:background="@drawable/blackbutton"
android:gravity="center|center_vertical|center_horizontal"
android:text="Badge: Black"
android:textColor="@color/white" />
<Button
android:layout_width="match_parent"
android:layout_height="30dp"
android:id="@+id/blueBadgeButton"
android:layout_below="@+id/divider4"
android:background="@drawable/badgebluebutton"
android:gravity="center|center_vertical|center_horizontal"
android:text="Badge: Blue"
android:textColor="@color/white" />
<Button
android:layout_width="match_parent"
android:layout_height="30dp"
android:id="@+id/greenBadgeButton"
android:layout_below="@+id/divider4"
android:background="@drawable/greenbadgebutton"
android:gravity="center|center_vertical|center_horizontal"
android:text="Badge: Green"
android:textColor="@color/white" />
<Button
android:layout_width="match_parent"
android:layout_height="30dp"
android:id="@+id/purpleBadgeButton"
android:layout_below="@+id/divider4"
android:background="@drawable/purplebadgebutton"
android:gravity="center|center_vertical|center_horizontal"
android:text="Badge: Purple"
android:textColor="@color/white" />
<Button
android:layout_width="match_parent"
android:layout_height="30dp"
android:id="@+id/redBadgeButton"
android:layout_below="@+id/divider4"
android:background="@drawable/redbadgebutton"
android:gravity="center|center_vertical|center_horizontal"
android:text="Badge: Red"
android:textColor="@color/white" />
<Button
android:layout_width="match_parent"
android:layout_height="30dp"
android:id="@+id/privateBadgeButton"
android:layout_below="@+id/divider4"
android:background="@drawable/publicbadgebutton"
android:gravity="center|center_vertical|center_horizontal"
android:text="Private"
android:textColor="@color/white" />
</ViewFlipper>
<Space
android:layout_width="20px"
android:layout_height="20px"
android:layout_above="@+id/submit"
android:layout_centerHorizontal="true"
android:layout_marginBottom="67dp"
android:id="@+id/space3" />
</RelativeLayout>
</RelativeLayout>
</ScrollView>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/thirdLayout"
android:orientation="vertical"
android:visibility="visible">
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapTwo"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Space
android:layout_width="50dp"
android:layout_height="20px"
android:layout_alignTop="@+id/clearText"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:id="@+id/space100" />
</RelativeLayout>
<Space
android:layout_width="20px"
android:layout_height="20px" />
</ViewFlipper>
<ViewFlipper
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/searchHintVF"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/searchVF">
<Space
android:layout_width="20px"
android:layout_height="20px" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/searcgHintLayout">
<TextView
android:id="@+id/searchhintTV"
android:layout_width="fill_parent"
android:layout_height="35dp"
android:background="#c79cb9ff"
android:paddingLeft="10dp"
android:layout_marginLeft="10dp"
android:layout_alignParentTop="true"
android:layout_marginTop="8dp"
android:textSize="13dp"
android:layout_marginRight="10dp"
android:gravity="center_vertical"
android:textColor="#ff4f4c52"
android:textColorHint="#ff4f4c52" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="X"
android:id="@+id/cancelHint"
android:background="@android:color/transparent"
android:textStyle="bold"
android:layout_alignTop="@+id/searchhintTV"
android:paddingTop="2dp"
android:textColor="#ff383838"
android:layout_alignRight="@+id/searchhintTV"
android:layout_alignEnd="@+id/searchhintTV"
android:layout_alignBottom="@+id/searchhintTV" />
</RelativeLayout>
</ViewFlipper>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true" />
<ViewFlipper
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/switchShapeViewFlipper"
android:layout_alignTop="@+id/radiusLayoutViewFlipper"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="25dp"
android:layout_marginLeft="5dp">
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/switch_shape_button"
android:layout_alignTop="@+id/radiusLayout"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:scaleX="0.4"
android:scaleY="0.4" />
<Space
android:layout_width="20px"
android:layout_height="20px" />
</ViewFlipper>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/orientation_button"
android:layout_below="@+id/switchShapeViewFlipper"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:visibility="invisible"
android:enabled="true"
android:layout_marginLeft="5dp"
android:scaleX="0.3"
android:scaleY="0.3"
android:background="@drawable/rotate_button"
android:layout_alignRight="@+id/switchShapeViewFlipper"
android:layout_alignEnd="@+id/switchShapeViewFlipper"
android:layout_above="@+id/seekBarViewFlipper"
android:alpha="70" />
....
It says the error happens at line 738 on the layout which is just a regular button widget.
UPDATE
The error is not when trying to inflate a custom view. The error is when trying to inflate a regular view.
Your OutOfMemoryError seems to be caused when you try to process a Bitmap, it can be seen from these lines:
Caused by: java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:677)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:507)
I highly recommend you to read this article about displaying bitmaps, espessially about loading large bitmaps efficiently and check your code if it does so.
Also, you can try to use a Picasso library by Square which helps a lot when working with Bitmaps.
UPDATE: The problem in your case may be that you use some large image in layout, just try to use smaller one's and see if it will still persist. Check out this answer which is similar to yours.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With