Unable to create layer for FrameLayout, size 192x0 max size 16384 color type 4 has context 1

java_vm_ext.cc:577] JNI DETECTED ERROR IN APPLICATION: JNI CallVoidMethodV called with pending exception 
java.lang.IllegalStateException: Unable to create layer for FrameLayout, size 192x0 max size 16384 color type 4 has context 1
   java_vm_ext.cc:577] (Throwable with empty stack trace)
   java_vm_ext.cc:577] 
   java_vm_ext.cc:577]     in call to CallVoidMethodV
这个报错信息大概是GPU 硬件加速相关的,意思是超出了最大尺寸限制。大概率是跟你使用透明动画相关,所以找找看你的布局文件。

解决方案

可以试着在你添加透明动画的 view上设置forceHasOverlappingRendering为 false,默认的hasOverlappingRendering为 true ,表示有你的 view 有重绘区域,此时绘制使用单通道绘制,效率较低。改为 false 后,系统会使用双通道同时绘制,大大提升效率,基本上都可以解决问题了。如果还是不行,极端点就是直接将该 view 的硬件加速关掉,但请注意如果你的 view 比较复杂,这样会影响效率,大概率会出现卡顿。

你可能感兴趣的:(Unable to create layer for FrameLayout, size 192x0 max size 16384 color type 4 has context 1)