admin 管理员组文章数量: 1086864
trying to use a recycled bitmap android.graphics.Bitmap@41d的异常 分析和解决
最近压力测试的时候遇到上面的这个问题,具体错误又不报哪一行错误;
错误日志如下:
Short Msg: java.lang.RuntimeException
Long Msg: java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@4630f45
Build Label: google/sdk_gphone_x86/generic_x86:8.1.0/OSM2.171116.002/4458339:user/release-keys
Build Changelist: 4458339
Build Time: 1510952710000
java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@4630f45at android.graphics.BaseCanvas.throwIfCannotDraw(BaseCanvas.java:55)at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:226)at android.view.RecordingCanvas.drawBitmap(RecordingCanvas.java:97)at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:529)at android.widget.ImageView.onDraw(ImageView.java:1349)at android.view.View.draw(View.java:19192)at android.view.View.updateDisplayListIfDirty(View.java:18142)at android.view.View.draw(View.java:18920)at android.view.ViewGroup.drawChild(ViewGroup.java:4236)at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)at android.view.View.draw(View.java:19195)at android.support.v4.view.ViewPager.draw(ViewPager.java:2443)at android.view.View.updateDisplayListIfDirty(View.java:18142)at android.view.View.draw(View.java:18920)at android.view.ViewGroup.drawChild(ViewGroup.java:4236)at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)at android.view.View.draw(View.java:19195)at android.view.View.updateDisplayListIfDirty(View.java:18142)at android.view.View.draw(View.java:18920)at android.view.ViewGroup.drawChild(ViewGroup.java:4236)at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)at android.view.View.updateDisplayListIfDirty(View.java:18133)at android.view.View.draw(View.java:18920)at android.view.ViewGroup.drawChild(ViewGroup.java:4236)at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)at android.view.View.updateDisplayListIfDirty(View.java:18133)at android.view.View.draw(View.java:18920)at android.view.ViewGroup.drawChild(ViewGroup.java:4236)at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)at android.view.View.draw(View.java:19195)at com.android.internal.policy.DecorView.draw(DecorView.java:788)at android.view.View.updateDisplayListIfDirty(View.java:18142)at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:669)at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:675)at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:783)at android.view.ViewRootImpl.draw(ViewRootImpl.java:2992)at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2806)at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2359)at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1392)at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6752)at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)at android.view.Choreographer.doCallbacks(Choreographer.java:723)at android.view.Choreographer.doFrame(Choreographer.java:658)at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)at android.os.Handler.handleCallback(Handler.java:790)at android.os.Handler.dispatchMessage(Handler.java:99)at android.os.Looper.loop(Looper.java:164)at android.app.ActivityThread.main(ActivityThread.java:6494)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
发了很多群,一直找不到什么原因造成的,检查代码也没看出毛病.后来看了这篇文章:
转载自:
在最近一个项目中,因为要使用AnimationDrawable进行动画播放,图片质量都比较大,而且播放的频率会很多,开发的行车记录仪的内存又有限,刚开始并没有将Bitmap recycle掉,所以出现了OOM的异常。为了解决内存溢出问题,在退出当前页面的时候,将Bitmap recycle掉。但是在此又遇到了另外一个问题,退出当前界面再进入这个页面的时候会报出 trying to use a recycled bitmap android.graphics.Bitmap@41d的异常。
此后看了很多文章,但是都并不能真正的解决这个问题,只能从源码查起了。
分析问题出现原因是在我们加载drawable的时候可能bitmap recycle后,被再次使用,所以导致此问题的出现。跟踪一下源代码 getResource(context).getDrawable(id)==继续进入代码==>loadDrawable(value, id);在这个里面我们可以看到关键代码
[java] view plain本文标签: trying to use a recycled bitmap androidgraphicsBitmap41d的异常 分析和解决
版权声明:本文标题:trying to use a recycled bitmap android.graphics.Bitmap@41d的异常 分析和解决 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1700300063a386456.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论