【发布时间】:2015-06-12 04:49:38
【问题描述】:
当我非常快地暂停/取消暂停我的应用程序时,我会遇到以下问题:
E/BufferQueueProducer( 177): [SurfaceView] connect(P): already connected (cur=1 req=1)
E/libEGL (25863): eglCreateWindowSurface: native_window_api_connect (win=0xb4984508) failed (0xffffffea) (already connected to another API?)
E/libEGL (25863): eglCreateWindowSurface:416 error 3003 (EGL_BAD_ALLOC)
我很确定我正在正确地停止/启动我的渲染线程,而且这个问题真的只发生在我非常快地暂停/恢复应用程序时(比如当你混合打开应用程序按钮时)。
任何想法可能是 eglCreateWindowSurface 在这里返回 EGL_NO_SURFACE 的原因吗?我的猜测是它与仍然连接到 SurfaceView 的东西有关。
【问题讨论】:
-
您包含的文本显示了崩溃的原因,但没有显示崩溃的位置。你也可以包括例外吗?可能相关:source.android.com/devices/graphics/architecture.html#activity
-
它在 eglCreateWindowSurface 方法中崩溃,该方法返回 EGL_NO_SURFACE
-
是否有带有堆栈跟踪的本机故障转储?当应用程序处于错误状态时,EGL 和 BufferQueue 代码不应使应用程序崩溃。
-
好吧,也许 crash 是我的问题中的错误措辞:问题是 egl 表面没有创建,这随后导致我的应用程序崩溃(这是预期的)。
标签: android opengl-es android-ndk surfaceview