FrescoImage crashes in LazyRow/LazyColumn due to java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap
See original GitHub issuePlease 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:
- Created 2 years ago
- Reactions:1
- Comments:7 (4 by maintainers)
Top 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 >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Thank you for your super fast fix 😃
Thanks for your check! I will release the next version soon based on the new patches.