question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

FrescoImage crashes in LazyRow/LazyColumn due to java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap

See original GitHub issue

Please complete the following information:

  • Library Version [1.2.4]
  • Affected Device(s) [Pixel 4 XL, Emulators]

Describe the Bug:

When using FrescoImage in LazyRow / LazyColumn (any LazyItemScope based layout), for any amount of items that is more than the ones that fit on screen (so that there can be recycling happening), if you scroll around it will eventually crash due to trying to use a recycled Bitmap. It is 100% reproducible if you scroll around your list of FrescoImage items and also background/foreground the app a bunch of times. Sometimes it’s fast to crash, sometimes it takes a couple of tries.

Attached video with my repro steps:

https://user-images.githubusercontent.com/534307/123402571-29f3d600-d5a8-11eb-98b4-b6e6ca13e686.mp4

Code:

LazyRow {
        item {
            Box(modifier = Modifier.padding(
                start = 16.dp,
                bottom = 16.dp,
                top = 16.dp,
                end = 8.dp
            )) {
                Icon(
                    imageVector = Icons.Filled.Favorite,
                    contentDescription = "Favorite",
                    modifier = Modifier.size(50.dp),
                    tint = Color.Red
                )
            }
        }
        items(dogs) { favorite ->
            Card(modifier = Modifier.padding(horizontal = 8.dp, vertical = 16.dp)) {
                FrescoImage(
                    imageUrl = favorite.image.url,
                    modifier = Modifier.size(50.dp),
                    contentScale = ContentScale.Crop
                )
            }
        }
    }
}

Stacktrace:

06-25 11:12:10.063 24136 24136 E AndroidRuntime: java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@95343df
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at android.graphics.BaseCanvas.throwIfCannotDraw(BaseCanvas.java:66)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at android.graphics.RecordingCanvas.throwIfCannotDraw(RecordingCanvas.java:277)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at android.graphics.BaseRecordingCanvas.drawBitmap(BaseRecordingCanvas.java:88)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.graphics.AndroidCanvas.drawImageRect-HPBpro0(AndroidCanvas.android.kt:275)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.graphics.drawscope.CanvasDrawScope.drawImage-9jGpkUE(CanvasDrawScope.kt:227)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeDrawScope.drawImage-9jGpkUE(Unknown Source:37)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.graphics.drawscope.DrawScope$DefaultImpls.drawImage-9jGpkUE$default(DrawScope.kt:459)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.graphics.painter.BitmapPainter.onDraw(BitmapPainter.kt:55)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.graphics.painter.Painter.draw-x_KDEd0(Painter.kt:212)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.draw.PainterModifier.draw(PainterModifier.kt:289)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.ModifiedDrawNode.performDraw(ModifiedDrawNode.kt:102)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:243)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper$invoke$1.invoke(LayoutNodeWrapper.kt:254)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper$invoke$1.invoke(LayoutNodeWrapper.kt:253)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:124)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:75)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.invoke(LayoutNodeWrapper.kt:253)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.invoke(LayoutNodeWrapper.kt:53)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.platform.RenderNodeApi29.record(RenderNodeApi29.android.kt:156)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(RenderNodeLayer.android.kt:243)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.platform.RenderNodeLayer.drawLayer(RenderNodeLayer.android.kt:224)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:238)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:243)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:243)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:243)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:805)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.InnerPlaceable.performDraw(InnerPlaceable.kt:104)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:243)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:243)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:243)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:243)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:243)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:805)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.InnerPlaceable.performDraw(InnerPlaceable.kt:104)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:243)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.performDraw(DelegatingLayoutNodeWrapper.kt:67)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:243)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.performDraw(DelegatingLayoutNodeWrapper.kt:67)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper$invoke$1.invoke(LayoutNodeWrapper.kt:254)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper$invoke$1.invoke(LayoutNodeWrapper.kt:253)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:124)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:75)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.invoke(LayoutNodeWrapper.kt:253)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.invoke(LayoutNodeWrapper.kt:53)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.platform.RenderNodeApi29.record(RenderNodeApi29.android.kt:156)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(RenderNodeLayer.android.kt:243)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.platform.RenderNodeLayer.drawLayer(RenderNodeLayer.android.kt:224)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:238)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:243)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeDrawScope.drawContent(LayoutNodeDrawScope.kt:42)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.foundation.Background.draw(Background.kt:107)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.ModifiedDrawNode.performDraw(ModifiedDrawNode.kt:102)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper$invoke$1.invoke(LayoutNodeWrapper.kt:254)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper$invoke$1.invoke(LayoutNodeWrapper.kt:253)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:124)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:75)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.invoke(LayoutNodeWrapper.kt:253)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.invoke(LayoutNodeWrapper.kt:53)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.platform.RenderNodeApi29.record(RenderNodeApi29.android.kt:156)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(RenderNodeLayer.android.kt:243)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.platform.RenderNodeLayer.drawLayer(RenderNodeLayer.android.kt:224)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:238)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:243)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper$invoke$1.invoke(LayoutNodeWrapper.kt:254)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper$invoke$1.invoke(LayoutNodeWrapper.kt:253)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:124)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:75)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.invoke(LayoutNodeWrapper.kt:253)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.invoke(LayoutNodeWrapper.kt:53)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.platform.RenderNodeApi29.record(RenderNodeApi29.android.kt:156)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(RenderNodeLayer.android.kt:243)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.platform.RenderNodeLayer.drawLayer(RenderNodeLayer.android.kt:224)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:238)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:805)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.InnerPlaceable.performDraw(InnerPlaceable.kt:104)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:243)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper$invoke$1.invoke(LayoutNodeWrapper.kt:254)
06-25 11:12:10.063 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper$invoke$1.invoke(LayoutNodeWrapper.kt:253)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:1788)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:119)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:75)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.invoke(LayoutNodeWrapper.kt:253)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeWrapper.invoke(LayoutNodeWrapper.kt:53)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.platform.RenderNodeApi29.record(RenderNodeApi29.android.kt:156)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(RenderNodeLayer.android.kt:243)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView.android.kt:674)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.View.draw(View.java:22353)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:21226)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4500)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4473)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:21186)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4500)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4473)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:21186)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4500)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4473)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:21186)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4500)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4473)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:21186)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4500)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4473)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:21186)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4500)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4473)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:21186)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:559)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:565)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:642)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ViewRootImpl.draw(ViewRootImpl.java:4106)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3833)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3104)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1948)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8177)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.Choreographer.doCallbacks(Choreographer.java:796)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.Choreographer.doFrame(Choreographer.java:731)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:938)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:99)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:223)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7664)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
06-25 11:12:10.064 24136 24136 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

Expected Behavior:

No crashes when recycling items.

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Reactions:1
  • Comments:7 (4 by maintainers)

github_iconTop GitHub Comments

2reactions
mrmans0ncommented, Jun 30, 2021

Thank you for your super fast fix 😃

1reaction
skydovescommented, Jun 30, 2021

Thanks for your check! I will release the next version soon based on the new patches.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Canvas: trying to use a recycled bitmap android.graphics.Bitmap
If anyone ever gets here and is struggling to figure out which Bitmap is recycled (like I did), here's what I ended up...
Read more >
Canvas: trying to use a recycled bitmap android.graphics ...
Java.Lang.RuntimeException: 'Canvas: trying to use a recycled bitmap ... On the second round it crashes and the exception is Java.Lang.
Read more >
bitmap.recycle(); problem in Android 4.1 onwards devices ...
But Android 4.1 onwards mobiles have following problem. I am used the same code. java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android....
Read more >
java.lang.RuntimeException: Canvas: trying to use a recycled ...
Crash Signature: android.graphics.Canvas.throwIfRecycled(Canvas.java)] [@ java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.
Read more >
Managing Bitmap Memory - Android Developers
If you call recycle() and later attempt to draw the bitmap, you will get the error: "Canvas: trying to use a recycled bitmap"...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found