java.lang.IllegalStateException:无法为X创建图层 - 使用硬件图层时

时间:2017-11-12 20:52:22

标签: android views hardware-acceleration

我在自定义视图上使用硬件图层,以便在设置其alpha动画时获得更好的性能。在我的崩溃记者看到这次崩溃:

Fatal Exception: java.lang.IllegalStateException: Unable to create layer for X
   at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
   at android.os.MessageQueue.next(MessageQueue.java:323)
   at android.os.Looper.loop(Looper.java:135)
   at android.app.ActivityThread.main(ActivityThread.java:5585)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)

我目前的解决方法是等待这种情况发生,然后存储“设备不支持硬件层”的布尔值,并继续崩溃一次......然后下一次回到更简单的动画。

鉴于这是异步发生的,我无法真正尝试捕获。有没有人知道预先检查操作是否会成功的方法,以便直接使用后备而不必在用户上崩溃甚至一次?

谢谢!

1 个答案:

答案 0 :(得分:0)

外观类似于https://issuetracker.google.com/issues/118714995。看看是否有帮助。

使用View#forceHasOverlappingRendering(false)设置父视图。