2011-12-19 74 views
5

我在片段中使用位图,并且我在片段的onDestroy()方法中调用bitmap.recycle()。但好几次我得到一个异常android片段何时调用bitmap.recycle()

E/AndroidRuntime(4869): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap [email protected]

我也试过在片段的onDestroyView()方法这样做,但仍然得到了同样的异常。

任何人都可以提出什么是片段生命周期的最好阶段,我应该叫bitmap.recycle()

+0

请参阅此:http://stackoverflow.com/questions/4959485/bitmap-bitmap-recycle-weakreference-and-garbage-collector – 2011-12-19 10:29:58

回答

0

您可以在onDestroyView或onDestory回收,但要确保你在你的OnCreate或重新创建位图onCreateView ..因为你再次使用相同的位图参考,它会抛出循环异常。所以当你创建片段时你需要重新创建位图,或者你也可以检查isRecycled()来知道你的位图是否已经被回收了。

0

我发现了解决方案,我正在努力解决完全相同的问题

我所做的是我删除了/每个片段的内容视图的所有子视图。 在每个片段的所有子视图都没有了之后,我弹出了片段(s)

我在每个片段的“OnDestroy”上循环使用位图,就像您现在正在执行的操作一样。

+0

你可以发布你的代码? – Kenshin 2017-04-25 06:57:58