這是報(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給的靈感。