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  (未验证)。

相关文章
|
5月前
|
前端开发 API Android开发
Android自定义View之Canvas一文搞定
这篇文章介绍了Android自定义View中如何使用Canvas和Paint来绘制图形。Canvas可理解为画布,用于绘制各种形状如文字、点、线、矩形、圆角矩形、圆和弧。常见API包括`drawText()`、`drawPoint()`、`drawLine()`、`drawRect()`等。文章还提到了Canvas的保存、恢复、平移和旋转方法,通过绘制钟表盘的例子展示了如何实际应用。总结关键点:Canvas与Paint结合用于图像绘制,掌握Canvas的基本绘图函数及坐标变换操作是自定义View的关键。
81 0
Android自定义View之Canvas一文搞定
|
前端开发 Android开发
Android 中使用Canvas绘制文字和矩形,将结果呈现在Bitmap上
Android 中使用Canvas绘制文字和矩形,将结果呈现在Bitmap上
186 0
|
前端开发 Android开发
Android Canvas之Path操作
Android Canvas之Path操作
276 0
|
前端开发 Android开发 Python
|
前端开发 Android开发 图形学
Android自定义View工具:Paint&Canvas(一)
本文主要讲的是自定义View时我们经常用到的Canvas和Paint,像平时画画一样,我们需要画布和画笔,而Canvas就是画布,Paint就是画笔
|
前端开发 Android开发
|
前端开发 Android开发
|
前端开发 Android开发
【Android 应用开发】Canvas 精准绘制文字 ( 文本边界坐标解析 | 绘图位置 )
【Android 应用开发】Canvas 精准绘制文字 ( 文本边界坐标解析 | 绘图位置 )
339 0
【Android 应用开发】Canvas 精准绘制文字 ( 文本边界坐标解析 | 绘图位置 )
|
前端开发 Android开发
【Android 应用开发】Canvas 精准绘制文字 ( 测量文本真实边界 | 将文本中心点与给定中心点对齐 )
【Android 应用开发】Canvas 精准绘制文字 ( 测量文本真实边界 | 将文本中心点与给定中心点对齐 )
221 0
【Android 应用开发】Canvas 精准绘制文字 ( 测量文本真实边界 | 将文本中心点与给定中心点对齐 )
|
Android开发
【错误记录】Android 应用运行报错 ( You need to use a Theme.AppCompat theme (or descendant) with this activity. )
【错误记录】Android 应用运行报错 ( You need to use a Theme.AppCompat theme (or descendant) with this activity. )
574 0
【错误记录】Android 应用运行报错 ( You need to use a Theme.AppCompat theme (or descendant) with this activity. )