Closed XtreeIvI closed 8 months ago
OOMs happen wherever memory is allocated that pushes your app over the memory limit. The root cause could be elsewhere in your app or the fact that your animation has too many or too large of bitmaps. There isn't anything Lottie itself can do about that.
Description: Loading indicator animation play correctly, but on some older devices it is causing OutOfMemoryError exception.
Lib Version:
6.2.0
Device Brand:Samsung Model:Galaxy S6 Edge Orientation:Portrait RAM free: 482.58 MB Disk free: 1.49 GB Operating System Version:Android 7.0 Orientation:Portrait Rooted:No
Stack Trace:
Fatal Exception: java.lang.OutOfMemoryError: Failed to allocate a 14745612 byte allocation with 10525824 free bytes and 10MB until OOM at dalvik.system.VMRuntime.newNonMovableArray(VMRuntime.java) at android.graphics.Bitmap.nativeCreate(Bitmap.java) at android.graphics.Bitmap.createBitmap(Bitmap.java:977) at android.graphics.Bitmap.createBitmap(Bitmap.java:948) at android.graphics.Bitmap.createBitmap(Bitmap.java:915) at com.airbnb.lottie.LottieDrawable.ensureSoftwareRenderingBitmap(LottieDrawable.java:1711) at com.airbnb.lottie.LottieDrawable.renderAndDrawAsBitmap(LottieDrawable.java:1664) at com.airbnb.lottie.LottieDrawable.draw(LottieDrawable.java:673) at android.widget.ImageView.onDraw(ImageView.java:1286) at android.view.View.draw(View.java:18318) at android.view.View.updateDisplayListIfDirty(View.java:17296) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at android.view.View.draw(View.java:18321) at android.view.View.updateDisplayListIfDirty(View.java:17296) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at android.view.View.updateDisplayListIfDirty(View.java:17291) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at android.view.View.updateDisplayListIfDirty(View.java:17291) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at android.view.View.updateDisplayListIfDirty(View.java:17291) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at android.view.View.draw(View.java:18321) at android.view.View.updateDisplayListIfDirty(View.java:17296) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at androidx.fragment.app.FragmentContainerView.drawChild(FragmentContainerView.kt:240) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at androidx.fragment.app.FragmentContainerView.dispatchDraw(FragmentContainerView.kt:230) at android.view.View.updateDisplayListIfDirty(View.java:17291) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at androidx.fragment.app.FragmentContainerView.drawChild(FragmentContainerView.kt:240) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at androidx.fragment.app.FragmentContainerView.dispatchDraw(FragmentContainerView.kt:230) at android.view.View.updateDisplayListIfDirty(View.java:17291) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1994) at android.view.View.updateDisplayListIfDirty(View.java:17291) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at androidx.fragment.app.FragmentContainerView.drawChild(FragmentContainerView.kt:240) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at androidx.fragment.app.FragmentContainerView.dispatchDraw(FragmentContainerView.kt:230) at android.view.View.updateDisplayListIfDirty(View.java:17291) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at androidx.fragment.app.FragmentContainerView.drawChild(FragmentContainerView.kt:240) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at androidx.fragment.app.FragmentContainerView.dispatchDraw(FragmentContainerView.kt:230) at android.view.View.updateDisplayListIfDirty(View.java:17291) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1994) at android.view.View.updateDisplayListIfDirty(View.java:17291) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at androidx.fragment.app.FragmentContainerView.drawChild(FragmentContainerView.kt:240) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at androidx.fragment.app.FragmentContainerView.dispatchDraw(FragmentContainerView.kt:230) at android.view.View.updateDisplayListIfDirty(View.java:17291) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at androidx.fragment.app.FragmentContainerView.drawChild(FragmentContainerView.kt:240) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at androidx.fragment.app.FragmentContainerView.dispatchDraw(FragmentContainerView.kt:230) at android.view.View.updateDisplayListIfDirty(View.java:17291) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at android.view.View.draw(View.java:18321) at android.view.View.updateDisplayListIfDirty(View.java:17296) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at android.view.View.updateDisplayListIfDirty(View.java:17291) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at android.view.View.updateDisplayListIfDirty(View.java:17291) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at android.view.View.updateDisplayListIfDirty(View.java:17291) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at android.view.View.updateDisplayListIfDirty(View.java:17291) at android.view.View.draw(View.java:18080) at android.view.ViewGroup.drawChild(ViewGroup.java:3966) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752) at android.view.View.draw(View.java:18321) at com.android.internal.policy.DecorView.draw(DecorView.java:919) at android.view.View.updateDisplayListIfDirty(View.java:17296) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:692) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:698) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:806) at android.view.ViewRootImpl.draw(ViewRootImpl.java:3128) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2924) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2516) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1515) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7091) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:927) at android.view.Choreographer.doCallbacks(Choreographer.java:702) at android.view.Choreographer.doFrame(Choreographer.java:638) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:913) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6682) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
Animation:
res/raw
loading_indicator.json