Android的 - GLSurfaceView EGL_BAD_ALLOC [英] Android -- GLSurfaceView EGL_BAD_ALLOC

查看:1388
本文介绍了Android的 - GLSurfaceView EGL_BAD_ALLOC的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在两个我的程序切换活动,每个充气派生 GLSurfaceView 使用维也纳各组织。经过来回切换这两个活动之间几次,程序崩溃并引发以下异常。每次有上下文切换VBO缓存被删除,的onStop()被调用,而下一个活动的 GLSurfaceView 充气一个新的实例。我重构要运行的程序只有一个 GLSurfaceView 活动,程序似乎没有发生任何事件运行。仅多边形和颜色的使用,无纹理。这里的损害:

My program switches between two Activities that each inflate a derived GLSurfaceView that uses VBOs. After switching back and forth between the two Activities a few times, the program crashes and throws the following exception. Each time there is a context switch the VBO buffers are deleted, onStop() is called, and a new instance of the next Activity's GLSurfaceView is inflated. I refactored the program to run on only one GLSurfaceView and Activity, and the program seems to run without incident. Only polygons and colors are used, no textures. Here's the damage:


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)

从做一些互联网研究,这是一个公认的href="http://$c$c.google.com/p/android/issues/detail?id=16124">错误

From doing some internet research, this is a recognized bug. So how do I do damage control? +200 for a nudge in the right direction.

编辑:我解决了这个问题(我忘了打电话给在onPause()/ ONRESTART()在视图上)。第一个人把一个回答任何必然GETS +200。

I SOLVED THE PROBLEM (I FORGOT TO CALL ONPAUSE() / ONRESTART() ON THE VIEWS). FIRST PERSON TO PUT AN ANSWER ABOUT ANYTHING WHATSOEVER GETS +200.

推荐答案

烦人,我不能发表评论,但我想你的意思是onResume,不onRestart。您的活动可以被暂停,而不被停止,这会导致的onPause,但不是onRestart

Annoyingly I can't post a comment yet, but I think you mean onResume, not onRestart. Your Activity can be paused without being stopped, which would cause onPause, but not onRestart.

此图像(从活动文档)显示了该活动的生命周期非常漂亮:

This image (from the Activity docs) shows this activity life cycle very nicely:

总之,记住要传递的onPause和onResume到这两个超级给GLSurfaceView。

In short, remember to pass onPause and onResume to both your super and to the GLSurfaceView.

从<一个href="http://android-developers.blogspot.com/2009/04/introducing-glsurfaceview.html">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;
}

这篇关于Android的 - GLSurfaceView EGL_BAD_ALLOC的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆