2013-01-03 21 views
2

我在我的activity A中显示一个.gif。当用户按下一个按钮用户移动到activity b和相同的.gif在那里显示,但我得到了“试图使用一个回收的位图android.graphics.Bitmap”我的activity b这个错误。试图使用回收的位图android.graphics.Bitmap

我从SD卡中显示.gif和上onStop()我设置的activity anullimageview以及在activity A但我不能够解决这个问题。

请帮助在这种情况下。

//登录猫

12-31 10:58:49.819: E/AndroidRuntime(20903): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap [email protected] 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.graphics.Canvas.throwIfRecycled(Canvas.java:955) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.graphics.Canvas.drawBitmap(Canvas.java:1044) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:325) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.widget.ImageView.onDraw(ImageView.java:854) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.View.draw(View.java:6880) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.ViewGroup.drawChild(ViewGroup.java:1646) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.ViewGroup.drawChild(ViewGroup.java:1644) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.ViewGroup.drawChild(ViewGroup.java:1644) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.View.draw(View.java:6883) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.ViewGroup.drawChild(ViewGroup.java:1646) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.View.draw(View.java:6883) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.widget.FrameLayout.draw(FrameLayout.java:357) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.ViewGroup.drawChild(ViewGroup.java:1646) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.ViewGroup.drawChild(ViewGroup.java:1644) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.View.draw(View.java:6883) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.widget.FrameLayout.draw(FrameLayout.java:357) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1871) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.ViewRoot.draw(ViewRoot.java:1542) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1269) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1883) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.os.Handler.dispatchMessage(Handler.java:99) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.os.Looper.loop(Looper.java:130) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at android.app.ActivityThread.main(ActivityThread.java:3737) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at java.lang.reflect.Method.invoke(Method.java:507) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:894) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652) 
12-31 10:58:49.819: E/AndroidRuntime(20903):  at dalvik.system.NativeStart.main(Native Method) 
+2

请给我们展示一些代码和你的logcat。 –

+0

如果不查看代码,就很难给出答案。然而,这发生了什么。当您将ImageView设置为空时,它可能会回收资源并回收位图。但是如果您在活动B中解码位图,则不应出现此错误。如果你的图像很大,如果你认为你会得到OOM错误,考虑使用位图选项和解码图像的大小ImageView –

+0

我假设你正在使用Facebook幻灯片库...这是因为在你用于滑出的libray中回收位图..我有同样的异常,我已经设法修复它.. – Pragnani

回答

0

试图找到你的代码或者你使用任何库的方法recycle()的使用引用。它表示有人正在回收仍在使用的不好的位图。只有当你确定不再需要给定的位图时,才能安全地调用recycle()方法。

当你处理位图缓存时,这通常是一个常见问题,不确定这是你的情况。

+0

我已经尝试使用recycle(),但这只适用于OS v 2.3或更低的android。 –

14

可以回收的位图,像前有检查:

if (img != null && !img.isRecycled()) 
{ 
img.recycle(); 
img = null; 
System.gc(); 
} 

这里IMG是位图。 试试这个类型的错误已解决。

+1

大哥们...... !!!!它解决了我的崩溃...... :) –

+4

有时候我想有权力“删除”一些用户,只是因为他们不接受答案! – JJ86

+0

@AmitJayaswal欢迎.. –

相关问题