我試圖在我的應用程序中正確使用OpenGL並在使用生命週期方法時遇到一些問題:onPause()
和onResume()
。GLSurfaceView生命週期方法onPause()和onResume()
的documentation狀態:
活動生命週期
當活動被暫停,重新恢復了GLSurfaceView必須通知。 GLSurfaceView客戶端需要在活動暫停時調用onPause(),並在活動恢復時調用onResume()。這些調用允許GLSurfaceView暫停並恢復渲染線程,並允許GLSurfaceView釋放並重新創建OpenGL顯示。
所有我有點困惑,onPause()
和onResume()
是,在整個Android系統的其餘部分,生命週期事件由系統(活動/片段),作爲所謂的第一次。在這裏,根據描述(包括onPause()和onResume()中的詳細描述),似乎它們必須由開發人員手動調用。
沒有調用onPause()
和onResume()
並沒有注意到一個問題,我一直在使用GLSurfaceView
。然而,爲了打球(並且在恢復活動時減少可能的奇怪行爲的嫌疑人),我試圖按照文檔中所述添加它們。
它似乎然而,使用的onResume()導致NullPointerException
拋出:
07-23 13:20:08.570: E/AndroidRuntime(20777): Caused by: java.lang.NullPointerException
07-23 13:20:08.570: E/AndroidRuntime(20777): at android.opengl.GLSurfaceView.onResume(GLSurfaceView.java:544)
07-23 13:20:08.570: E/AndroidRuntime(20777): at com.ActivityNameHere.onResume(ActivityNameHere.java:151)
是否有一步我缺少註冊Activity
與View
?
來自setRenderer的文檔:「這個方法在GLSurfaceView的生命週期中應該只調用一次*。」你確定你做對了嗎?或者也許我錯過了一些東西。 – async 2014-03-16 14:41:50