【发布时间】:2012-07-21 16:58:07
【问题描述】:
我正在尝试在我的应用程序中正确使用 OpenGL,但在使用生命周期方法时遇到了一些问题:onPause() 和 onResume()。
documentation 声明:
活动生命周期
当活动暂停和恢复时,必须通知 GLSurfaceView。 GLSurfaceView 客户端需要在活动暂停时调用 onPause() 并在活动恢复时调用 onResume()。这些调用允许 GLSurfaceView 暂停和恢复渲染线程,还允许 GLSurfaceView 释放和重新创建 OpenGL 显示。
首先我有点困惑,因为onPause() 和onResume() 在Android 的其余部分中都是系统调用的生命周期事件(活动/片段)。这里从描述(包括onPause()和onResume()中的详细描述)看来是需要开发者手动调用的。
我一直在使用GLSurfaceView 没有调用onPause() 和onResume() 并且没有发现问题。但是,为了打球(并减少可能在恢复活动时出现奇怪行为的嫌疑人),我正在尝试按照文档中的说明添加它们。
然而,似乎使用 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 的步骤?
【问题讨论】:
标签: android opengl-es glsurfaceview