【问题标题】:java.lang.IllegalStateException: Unable to create layer for X -- when using hardware layersjava.lang.IllegalStateException: Unable to create layer for X -- when using hardware layers
【发布时间】:2018-04-25 12:22:46
【问题描述】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-12-26
      • 2021-04-17
      • 2015-01-04
      • 2022-12-28
      • 1970-01-01
      • 2020-02-09
      • 2022-11-12
      • 2022-12-19
      • 1970-01-01
      相关资源
      最近更新 更多