Canvas: trying to use a recycled bitmap android.graphics.Bitmap

简介:

问题:

E/AndroidRuntime( 3281): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@40561d70
E/AndroidRuntime( 3281):        at android.graphics.Canvas.throwIfRecycled(Canvas.java:955)
E/AndroidRuntime( 3281):        at android.graphics.Canvas.drawBitmap(Canvas.java:1044)
E/AndroidRuntime( 3281):        at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:325)
E/AndroidRuntime( 3281):        at android.widget.ImageView.onDraw(ImageView.java:872)
E/AndroidRuntime( 3281):        at android.view.View.draw(View.java:7102)
E/AndroidRuntime( 3281):        at android.view.ViewGroup.drawChild(ViewGroup.java:1651)
E/AndroidRuntime( 3281):        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
E/AndroidRuntime( 3281):        at android.view.View.draw(View.java:7105)
E/AndroidRuntime( 3281):        at android.support.v4.view.ViewPager.draw(ViewPager.java:1923)
E/AndroidRuntime( 3281):        at android.view.ViewGroup.drawChild(ViewGroup.java:1651)
E/AndroidRuntime( 3281):        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
E/AndroidRuntime( 3281):        at android.view.View.draw(View.java:7105)
E/AndroidRuntime( 3281):        at android.view.ViewGroup.drawChild(ViewGroup.java:1651)
E/AndroidRuntime( 3281):        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
E/AndroidRuntime( 3281):        at android.view.ViewGroup.drawChild(ViewGroup.java:1649)
E/AndroidRuntime( 3281):        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1375)
E/AndroidRuntime( 3281):        at android.view.View.draw(View.java:7105)
E/AndroidRuntime( 3281):        at android.widget.FrameLayout.draw(FrameLayout.java:357)
E/AndroidRuntime( 3281):        at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1988)
E/AndroidRuntime( 3281):        at android.view.ViewRoot.draw(ViewRoot.java:1547)
E/AndroidRuntime( 3281):        at android.view.ViewRoot.performTraversals(ViewRoot.java:1266)
E/AndroidRuntime( 3281):        at android.view.ViewRoot.handleMessage(ViewRoot.java:1898)
E/AndroidRuntime( 3281):        at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 3281):        at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime( 3281):        at android.app.ActivityThread.main(ActivityThread.java:3768)
E/AndroidRuntime( 3281):        at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 3281):        at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime( 3281):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime( 3281):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime( 3281):        at dalvik.system.NativeStart.main(Native Method)


原因:

使用了已经被recycle回收过的无效Bitmap


解决办法:

方法一:在创建和回收bitmap时,对bitmap设置同步锁;

方法二:参考http://bbs.csdn.net/topics/390196217  (未验证)。

相关文章
|
7月前
|
前端开发 数据可视化 Java
Android用Canvas画一个折线图,并加以简单封装
本文介绍了如何用Java绘制动态折线图,从固定折线图的实现到封装成可复用的组件。首先通过绘制XY坐标轴、添加坐标标签和绘制折线及数据点完成基础折线图。接着,将静态数据替换为动态输入,支持自定义X轴、Y轴和折线数据。代码中包含关键方法如`drawDaxes`(绘制坐标轴)、`drawAxispoint`(绘制坐标点)和`drawbrokenLine`(绘制折线)。最终实现可根据传入数据动态生成折线图,适用于Android开发中的数据可视化场景。
264 0
|
7月前
|
XML 前端开发 Java
Android用Canvas画一个真正能跑的跑马灯
这是一篇关于使用Canvas实现跑马灯效果的技术分享。作者通过一个简单的Demo,展示了如何利用Android的Canvas绘制动态跑马灯。核心思路是通过开启耗时线程让彩色背景旋转,结合坐标计算、渐变色绘制和旋转动画,最终实现动态视觉效果。代码分为三个主要部分:1) 计算View宽高与矩形坐标;2) 绘制背景、跑马灯及幕布;3) 设置旋转逻辑并反向调整幕布。文末附有完整Java代码及XML调用示例,适合初学者学习Canvas绘图原理。
144 0
|
前端开发 API Android开发
Android自定义View之Canvas一文搞定
这篇文章介绍了Android自定义View中如何使用Canvas和Paint来绘制图形。Canvas可理解为画布,用于绘制各种形状如文字、点、线、矩形、圆角矩形、圆和弧。常见API包括`drawText()`、`drawPoint()`、`drawLine()`、`drawRect()`等。文章还提到了Canvas的保存、恢复、平移和旋转方法,通过绘制钟表盘的例子展示了如何实际应用。总结关键点:Canvas与Paint结合用于图像绘制,掌握Canvas的基本绘图函数及坐标变换操作是自定义View的关键。
388 0
Android自定义View之Canvas一文搞定
|
前端开发 Android开发
Android 中使用Canvas绘制文字和矩形,将结果呈现在Bitmap上
Android 中使用Canvas绘制文字和矩形,将结果呈现在Bitmap上
419 0
|
前端开发 Android开发
Android Canvas之Path操作
Android Canvas之Path操作
454 0
|
前端开发 Android开发 Python
|
前端开发 Android开发 图形学
Android自定义View工具:Paint&Canvas(一)
本文主要讲的是自定义View时我们经常用到的Canvas和Paint,像平时画画一样,我们需要画布和画笔,而Canvas就是画布,Paint就是画笔
200 0
|
前端开发 Android开发
|
前端开发 Android开发
|
前端开发 Android开发
【Android 应用开发】Canvas 精准绘制文字 ( 文本边界坐标解析 | 绘图位置 )
【Android 应用开发】Canvas 精准绘制文字 ( 文本边界坐标解析 | 绘图位置 )
408 0
【Android 应用开发】Canvas 精准绘制文字 ( 文本边界坐标解析 | 绘图位置 )

热门文章

最新文章