2011-12-19 73 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