【问题标题】:IllegalStateException on HardwareRenderer createSurfaceHardwareRenderer createSurface 上的 IllegalStateException
【发布时间】:2015-04-13 22:36:50
【问题描述】:

在我的 crashlytics 日志中,我看到以下错误:

java.lang.IllegalStateException eglMakeCurrent failed EGL_BAD_ALLOC  android.view.HardwareRenderer GlRenderer.createSurface HardwareRenderer.java
       at android.view.HardwareRenderer$GlRenderer.invalidate(HardwareRenderer.java:1328)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1921)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1234)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6467)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:803)
       at android.view.Choreographer.doCallbacks(Choreographer.java:603)
       at android.view.Choreographer.doFrame(Choreographer.java:573)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:789)
       at android.os.Handler.handleCallback(Handler.java:733)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:157)
       at android.app.ActivityThread.main(ActivityThread.java:5356)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:515)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
       at dalvik.system.NativeStart.main(NativeStart.java)

https://github.com/android/platform_frameworks_base/blob/android-4.4_r1.2/core/java/android/view/HardwareRenderer.java#L1328

GT I9500 - Android 4.4.2 用户遇到此崩溃。 原因是什么?如何隔离问题?

(类似:Problems with passing variable via intent between activities eglSwapBuffers failed: EGL_BAD_ALLOC AndEngine Android)

【问题讨论】:

  • 一个应用程序出现类似的崩溃,所有这些都来自 Asus MeMO Pad HD 7 (ME173X) (ME173X),1024MB RAM,Android 4.2

标签: android


【解决方案1】:

就像你提到的链接所说,首先要查找错误是确保 onPauseonResume 被传递给你的超级和 GLSurfaceView

...@Override
    protected void onPause() {
        super.onPause();
        mGLView.onPause();
    }

    @Override
    protected void onResume() {
        super.onResume();
        mGLView.onResume();
    }

    private GLSurfaceView mGLView;...

【讨论】:

  • onPause 方法中我有这个:super.onPause() 但我没有这个:mGLView.onPause()。我应该添加 mGLView 吗?
  • 这发生在 %0.1 的用户身上。为什么这个错误如此罕见?
  • @trante 确实...我今天才第一次看到它。我有数百台已经运行多年的企业设备。我不时看到其他非常奇怪的错误。这让我觉得可能 Android 的标准 API 中存在一些竞争条件。
【解决方案2】:

以下代码(用于隐藏导航栏)还在某些设备上生成EGL_BAD_ALLOC(在我的例子中是带有 Android 4.2.2 的三星 Galaxy Tab 10.1):

Window window = getWindow();
WindowManager.LayoutParams attributes = window.getAttributes();
attributes.flags |= 0x80000000;
window.setAttributes(attributes);

【讨论】:

  • 我正在运行与您相同的设备(Samsung Galaxy Tab 10.1 和 Android 4.2.2),并且在窗口上设置 DrawsSystemBarBackgrounds 标志时出现此异常。您是否解决了这个问题或取得了任何进展?
  • 对我没有帮助
猜你喜欢
  • 2013-08-29
  • 1970-01-01
  • 2013-07-12
  • 2014-12-20
  • 1970-01-01
  • 2019-07-26
  • 2018-05-23
  • 1970-01-01
  • 2023-04-09
相关资源
最近更新 更多