我的程序在两个Activities
之间切换,每个GLSurfaceView
对使用VBO的派生GLSurfaceView
进行充气。在两个活动之间来回切换几次后,程序崩溃并抛出以下异常。每次有上下文切换时,都会删除VBO缓冲区,调用onStop(),并且下一个Activity GLSurfaceView
的新实例会膨胀。我重构了程序,只运行一个Activity
和
Java.lang.RuntimeException: createContext failed: EGL_BAD_ALLOC
at android.opengl.GLSurfaceView$EglHelper
.throwEglException(GLSurfaceView.java:1079)
at android.opengl.GLSurfaceView$EglHelper
.throwEglException(GLSurfaceView.java:1071)
at android.opengl.GLSurfaceView$EglHelper
.start(GLSurfaceView.java:927)
at android.opengl.GLSurfaceView$GLThread
.guardedRun(GLSurfaceView.java:1248)
at android.opengl.GLSurfaceView$GLThread
.run(GLSurfaceView.java:1118)
,程序似乎没有发生任何事故。仅使用多边形和颜色,没有纹理。这是损害:
{{1}}
从做一些互联网研究,这是一个recognized bug。那么如何进行损害控制呢?在正确的方向上轻推+200。
编辑:我解决了问题(我打算在视图上调用ONPAUSE()/ ONRESTART())。第一个人要求任何关于任何事情的答案+200。
答案 0 :(得分:18)
令人讨厌我还不能发表评论,但我认为你的意思是onResume,而不是onRestart。您的活动可以暂停而不会被停止,这会导致onPause,但不会导致onRestart。
此图片(来自Activity docs)非常好地展示了此活动的生命周期:
简而言之,请记住将onPause和onResume传递给你的super和GLSurfaceView。
来自http://android-developers.blogspot.com/2009/04/introducing-glsurfaceview.html:
public class ClearActivity extends Activity {
... snip ...
@Override
protected void onPause() {
super.onPause();
mGLView.onPause();
}
@Override
protected void onResume() {
super.onResume();
mGLView.onResume();
}
private GLSurfaceView mGLView;
}