0

I am trying to open up fragments from app drawer and the app is crashing to what I believe is an oom error. I have tried to convert all images to webp format and it still crashes. On some devices the app is working properly, and on some it crash, and some it doesnt even open... This post is regarding for the phones that open but crash when selecting a fragment.

Here is the error from logcat:

2019-12-18 14:18:31.970 5614-5614/com.fchw.noexcusas E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.fchw.noexcusas, PID: 5614
        android.view.InflateException: Binary XML file line #45: Binary XML file line #45: Error inflating class <unknown>
        Caused by: android.view.InflateException: Binary XML file line #45: Error inflating class <unknown>
        Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Constructor.newInstance0(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
            at android.view.LayoutInflater.createView(LayoutInflater.java:645)
            at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
            at android.view.LayoutInflater.onCreateView(LayoutInflater.java:717)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:785)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
            at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
            at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
            at com.fchw.noexcusas.AboutUsActivity.onCreateView(AboutUsActivity.java:43)
            at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2600)
            at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:881)
            at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
            at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)
            at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:439)
            at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079)
            at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869)
            at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824)
            at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727)
            at androidx.fragment.app.FragmentManagerImpl$2.run(FragmentManagerImpl.java:150)
            at android.os.Handler.handleCallback(Handler.java:751)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:241)
            at android.app.ActivityThread.main(ActivityThread.java:6217)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
         **Caused by: java.lang.OutOfMemoryError: Failed to allocate a 37454412 byte allocation with 16777216 free bytes and 30MB until OOM**
            at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
            at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
            at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:620)
            at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:455)
            at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1152)
            at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:794)
            at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:645)
            at android.content.res.Resources.loadDrawable(Resources.java:858)
            at android.content.res.TypedArray.getDrawable(TypedArray.java:928)
            at android.view.View.<init>(View.java:4222)
            at android.view.ViewGroup.<init>(ViewGroup.java:578)
            at android.widget.LinearLayout.<init>(LinearLayout.java:211)
            at android.widget.LinearLayout.<init>(LinearLayout.java:207)

Here is the xml to one of the fragments causing the crash

    <?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="wrap_content"
      android:background="#F1EDED"
       tools:context=".AboutUsActivity">



<ScrollView
    android:layout_width="match_parent"
    android:id="@+id/layoutHead"
    android:layout_height="wrap_content">
    <RelativeLayout
        android:background="@drawable/green_grass"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/nameTV"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="5dp"
            android:layout_marginTop="5dp"
            android:layout_marginEnd="5dp"
            android:padding="20dp"
            android:text="@string/gymDescribe"
            android:textAlignment="center"
            android:textColor="#ffffff"
            android:textSize="20sp"
            android:textStyle="bold" />

    </RelativeLayout>

</ScrollView>




<ScrollView
    android:layout_marginTop="200dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <LinearLayout
        android:id="@+id/rellaybottom"
        android:orientation="vertical"
        android:background="@drawable/statbcg4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="0dp"
        android:layout_marginEnd="0dp" >

        <TextView
            android:id="@+id/clickwapp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:autoLink="web"
            android:linksClickable="true"
            android:text="@string/wappClick"
            android:gravity="center"
            android:textSize="20sp"
            android:textColor="@color/colorBlack"
            android:textStyle="bold">

        </TextView>

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:autoLink="web"
            android:linksClickable="true"
            android:text="@string/wapp"
            android:gravity="center"
            android:textSize="20sp"
            android:textColor="@color/colorBlack"
            android:textColorLink="@color/colorWhite"
            android:textStyle="bold">

        </TextView>


        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:autoLink="web"
            android:linksClickable="true"
            android:text="@string/facbeookClick"
            android:gravity="center"
            android:textSize="20sp"
            android:textColor="#3b5998"
            android:textStyle="bold">

        </TextView>

        <TextView
            android:id="@+id/clickfb"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:autoLink="web"
            android:linksClickable="true"
            android:text="@string/facebook"
            android:gravity="center"
            android:textSize="20sp"
            android:textColorLink="@color/colorWhite"
            android:textStyle="bold">

        </TextView>



        <TextView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_marginTop="15dp"
        android:text="Cargando Fotos..."
        android:textSize="15dp"
        android:textAlignment="center"/>

        <ImageView
            android:id="@+id/schedulePhotoIV"
            android:contentDescription="@string/app_name"
           android:layout_marginTop="20dp"
           android:layout_width="match_parent"
           android:layout_height="700dp"
            android:src="@drawable/ic_cloud">

       </ImageView>

        <View
            android:layout_width="match_parent"
            android:layout_height="5dp"
            android:layout_marginTop="20dp"
            android:background="@color/colorBlack" />

        <ImageView
            android:id="@+id/pricesPhotoIV"
            android:contentDescription="@string/app_name"
            android:layout_marginTop="20dp"
            android:layout_width="match_parent"
            android:layout_height="700dp"
            android:src="@drawable/ic_cloud">
        </ImageView>



        <View
            android:layout_width="match_parent"
            android:layout_height="5dp"
            android:layout_marginTop="20dp"
            android:background="@color/colorBlack" />

        <ImageView
            android:id="@+id/planbBigIV"
            android:contentDescription="@string/app_name"
            android:layout_marginTop="20dp"
            android:layout_width="match_parent"
            android:layout_height="700dp"
            android:src="@drawable/ic_cloud">
        </ImageView>


        <View
            android:layout_width="match_parent"
            android:layout_height="5dp"
            android:layout_marginTop="20dp"
            android:background="@color/colorBlack" />


        <ImageView
            android:id="@+id/locationPhotoIV"
            android:contentDescription="@string/app_name"
            android:layout_marginTop="20dp"
            android:layout_width="match_parent"
            android:layout_height="700dp"
            android:src="@drawable/ic_cloud">
        </ImageView>



    </LinearLayout>
</ScrollView>

Marcin Orlowski
  • 72,056
  • 11
  • 123
  • 141
Carlos Craig
  • 149
  • 1
  • 14
  • 1
    Does this answer your question? [Android:java.lang.OutOfMemoryError: Failed to allocate a 23970828 byte allocation with 2097152 free bytes and 2MB until OOM](https://stackoverflow.com/questions/32244851/androidjava-lang-outofmemoryerror-failed-to-allocate-a-23970828-byte-allocatio) – ʍѳђઽ૯ท Dec 18 '19 at 18:39
  • will give this a shot and report back – Carlos Craig Dec 18 '19 at 18:48
  • 1
    one of `green_grass` or `statbcg4` is too big. I'd rather use a `GlideImageView` to load such large images. – EpicPandaForce Dec 18 '19 at 19:06
  • those are the background images, would that method work for background images? – Carlos Craig Dec 23 '19 at 21:15

1 Answers1

1

You're using too many images of higher resolution at a time which the phone is not able to handle/manage. You should use any Image loading packages like https://square.github.io/picasso/ and it should fix the issue like memory and disk caching.

Example:

Picasso.get()
  .load(url)
  .resize(720, 740) // your prefered image size
  .centerCrop()
  .into(imageView)
OMi Shah
  • 5,768
  • 3
  • 25
  • 34
  • would this work with the background images as well? – Carlos Craig Dec 23 '19 at 19:31
  • yes, this works. Check https://stackoverflow.com/a/29777471/5882307 – OMi Shah Dec 24 '19 at 07:29
  • I've tried the steps and from the link , it seems that the picasso from the link is out of date a bit. Also, since I'm using a scrollview and my top background is for a RelativeLayout and the bottom is for a LinearLayout, I'm not seeing/understanding how I can individually add a background with Picasso – Carlos Craig Dec 28 '19 at 01:11
  • Is it possible to lower the resolution of the actual photo and us that? – Carlos Craig Dec 28 '19 at 01:12
  • Pass the reference of the layout to Picasso to load different backgrounds. Also use available methods to resize the image to lower resolution. – OMi Shah Dec 28 '19 at 13:36