2014-03-06 143 views
0

我有一個集成的Android GPU圖像庫進行圖像處理,我得到了一些Android設備下面的崩潰。如果這是回收位圖的問題,那麼它應該在所有設備上崩潰,不是嗎?Android Opengl崩潰

java.lang.RuntimeException: Canvas: trying to use a recycled bitmap [email protected] 
at android.graphics.Canvas.throwIfRecycled(Canvas.java:1047) 
at android.graphics.Canvas.drawBitmap(Canvas.java:1087) 
at pm.run(SourceFile:214) 
at pi.onDrawFrame(SourceFile:113) 
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1463) 
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1217) 

在大多數Android設備上它工作正常,但是這個問題只發生在某些設備上。提供你的建議來解決它。

回答

0

它propably不會對因下列問題之一的所有設備崩潰:

  • 在此之前的Android 3.0,位圖數據是不是在VM的內存,但在本機內存中舉行,如果您回收位圖,你實際上不知道位圖數據何時被刪除。 (請參閱:Managing Bitmap Data

  • 但即使在Android 3.0及更高版本的設備上,位圖數據將在未來某個時間被垃圾回收器清除。

因此,也許你只是幸運,即使回收被調用,你仍然可以訪問位圖。 然後就是因爲垃圾收集器沒有運行。

+0

謝謝,我會通過鏈接。 – pavan