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

问题描述 投票:6回答:1

我在自定义视图上使用硬件层,以便在动画其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)

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

考虑到这是异步发生的,我无法真正尝试捕捉。有谁知道有什么方法可以事先检查操作是否成功,以便直接使用回退,而不必让用户崩溃一次?

谢谢!

android views hardware-acceleration
1个回答
0
投票

看起来类似于 https:/issuetracker.google.comissues118714995。. 看看这是否有帮助。

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

© www.soinside.com 2019 - 2024. All rights reserved.