Skip to content

OutOfMemoryError in MaterialShowcaseView.onDraw #35

Description

@mdivkovic

Hey,

first off, thanks for the lib, it's really useful not having to develop something like this from scratch.

Now onto the problem. I'm using this in an app and seem to be getting quite a lot of OutOfMemoryErrors in the wild, with the following stack trace:

java.lang.OutOfMemoryError: Failed to allocate a 8294412 byte allocation with 417014 free bytes and 407KB until OOM
       at dalvik.system.VMRuntime.newNonMovableArray(VMRuntime.java)
       at android.graphics.Bitmap.nativeCreate(Bitmap.java)
       at android.graphics.Bitmap.createBitmap(Bitmap.java:939)
       at android.graphics.Bitmap.createBitmap(Bitmap.java:912)
       at android.graphics.Bitmap.createBitmap(Bitmap.java:879)
       at uk.co.deanwild.materialshowcaseview.MaterialShowcaseView.onDraw(MaterialShowcaseView.java:140)
       at android.view.View.draw(View.java:16060)
       at android.widget.FrameLayout.draw(FrameLayout.java:592)
       at android.view.View.updateDisplayListIfDirty(View.java:14991)
       at android.view.View.getDisplayList(View.java:15014)
       at android.view.View.draw(View.java:15781)
       at android.view.ViewGroup.drawChild(ViewGroup.java:3677)
       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3471)
       at android.view.View.draw(View.java:16063)
       at android.widget.FrameLayout.draw(FrameLayout.java:592)
       at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2916)
       at android.view.View.updateDisplayListIfDirty(View.java:14991)
       at android.view.View.getDisplayList(View.java:15014)
       at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:275)
       at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:281)
       at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:320)
       at android.view.ViewRootImpl.draw(ViewRootImpl.java:2741)
       at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2573)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2165)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1180)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6558)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
       at android.view.Choreographer.doCallbacks(Choreographer.java:590)
       at android.view.Choreographer.doFrame(Choreographer.java:560)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
       at android.os.Handler.handleCallback(Handler.java:739)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:145)
       at android.app.ActivityThread.main(ActivityThread.java:5832)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

These happen mostly on the Samsung Galaxy S3, Note 2 and some on the Galaxy S5 even. The background bitmap just gets too big to fit into the available memory.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions