運行相機demo時在頁面退出和相機橫豎屏切換(橫豎屏切換本身也會重啟頁面)報錯如下:
E/CameraDeviceGLThread-0: Received exception on GL render thread:
java.lang.IllegalStateException: glDrawArrays: GLES20 error: 0x505
at android.hardware.camera2.legacy.SurfaceTextureRenderer.checkGlError(SurfaceTextureRenderer.java:537)
at android.hardware.camera2.legacy.SurfaceTextureRenderer.drawFrame(SurfaceTextureRenderer.java:346)
at android.hardware.camera2.legacy.SurfaceTextureRenderer.drawIntoSurfaces(SurfaceTextureRenderer.java:724)
at android.hardware.camera2.legacy.GLThreadManager$1.handleMessage(GLThreadManager.java:105)
原因:OOM,因為一個app的內存只有64MB,而你在操作需要更多內存的文件.這個時候app無法申請到內存就會報這個錯誤.
解決方法:
在清單文件中添加 android:largeHeap="true" 屬性
<application android:name=".app.App" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="demo" android:networkSecurityConfig="@xml/network_security_config" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" android:largeHeap="true" tools:replace="android:label">
但是的話,只作為demo臨時運行的解決方案還行,如果正式在項目中使用還是需要找到內存泄漏的原因解決才行哈。
我這里的demo原因是有一些資源沒釋放,內存一直占用,釋放后解決。