Android createWindowSurface failed EGL_BAD_ALLOC 引起Crash的解決方案

這是報(bào)錯(cuò)日志:java.lang.RuntimeException: createWindowSurface failed EGL_BAD_ALLOC

at android.view.HardwareRenderer$GlRenderer.createSurface(HardwareRenderer.java:1406)

at android.view.HardwareRenderer$GlRenderer.createEglSurface(HardwareRenderer.java:1293)

at android.view.HardwareRenderer$GlRenderer.initialize(HardwareRenderer.java:1107)

at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1807)

at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1189)

at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6223)

at android.view.Choreographer$CallbackRecord.run(Choreographer.java:788)

at android.view.Choreographer.doCallbacks(Choreographer.java:591)

at android.view.Choreographer.doFrame(Choreographer.java:560)

at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:774)

at android.os.Handler.handleCallback(Handler.java:808)

at android.os.Handler.dispatchMessage(Handler.java:103)

at android.os.Looper.loop(Looper.java:193)

at android.app.ActivityThread.main(ActivityThread.java:5292)

at java.lang.reflect.Method.invokeNative(Native Method)

at java.lang.reflect.Method.invoke(Method.java:515)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)

at dalvik.system.NativeStart.main(Native Method)

錯(cuò)誤信息為:createWindowSurface failed EGL_BAD_ALLOC

解釋下EGL:EGL 視窗設(shè)計(jì)是基于人們熟悉的用于 Microsoft Windows ( WGL )和 UNIX ( GLX )上的 OpenGL 的 Native 接口,與后者比較接近。OpenGL ES 圖形管線的狀態(tài)被存儲(chǔ)于 EGL 管理的一個(gè) Context 中。 Frame Buffers 和其他繪制 Surfaces 通過(guò) EGL API 創(chuàng)建、管理和銷毀。EGL 同時(shí)也控制和提供了對(duì)設(shè)備顯示和可能的設(shè)備渲染配置的訪問(wèn)。

錯(cuò)誤信息的大概意思就是創(chuàng)建窗口視圖失敗,錯(cuò)誤信息是EGL_BAD_ALLOC。

EGL_BAD_ALLOC:無(wú)法創(chuàng)建視圖(缺少資源或者之前已經(jīng)創(chuàng)建了一個(gè))。


再看一下onTrimMemory里的level,如果提示危險(xiǎn)的話,在相應(yīng)的生命周期里面做一下內(nèi)存處理,比如判斷一下bitmap的大小,清理一下bitmap等操作。盡量不要讓Activity到一個(gè)危險(xiǎn)的即將被回收的環(huán)境。

尤其是使用MVP架構(gòu)的老司機(jī)們,一定要注意看下業(yè)務(wù)層里面的對(duì)象是否有釋放掉。


對(duì)了。還有網(wǎng)上有人說(shuō)要關(guān)閉加速器,千萬(wàn)不要這么干,關(guān)閉加速器可以緩解這個(gè)問(wèn)題延遲出現(xiàn),然并卵,是解決不了根本問(wèn)題。關(guān)閉加速器會(huì)讓你的app運(yùn)行很慢。

最后感謝:http://blog.csdn.net/yaphetzhao/article/details/48240073給的靈感。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容