android java.lang.IllegalStateException:无法为v创建图层

qjp7pelc  于 12个月前  发布在  Android
关注(0)|答案(5)|浏览(142)

我有这个例外对crashlytics和不知道如何复制或什么原因可能是。有没有人能告诉我应该从哪里开始找?仅影响Android 5+。

Fatal Exception: java.lang.IllegalStateException: Unable to create layer for v
       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 5,它似乎影响Android 5+

3hvapo4f

3hvapo4f1#

这个问题似乎与Scene transition with hero elements throws Layer exceeds max. dimensions supported by the GPU有关。
您应该查看正在进行的任何活动事务,特别是makeSceneTransitionAnimation()的影响。

4uqofj5v

4uqofj5v2#

Fatal Exception: java.lang.IllegalStateException: Unable to create layer for LinearLayout, size 1080x4160 exceeds max size 4096
       at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
       at android.os.MessageQueue.next(MessageQueue.java:323)
       at android.os.Looper.loop(Looper.java:136)
       at android.app.ActivityThread.main(ActivityThread.java:6186)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)

我在NestedScrollView中遇到了同样的问题
RecyclerView <- inside NestedScrollView

**解决方案:**作为Scrollview或nestedscrollview中的RecyclerView,尝试一次加载所有项目。由于RecyclerView一次加载所有项目,因此也会加载屏幕上目前不可见的项目。如果你把log放在RecylerView的onBindViewHolder中,你会发现所有的项目都是在一开始加载的,而不是基于项目的可见性。

这会导致UI一次加载超过1-1.5个屏幕的内容。这将导致父LinearLayout(在ScrollView内)抛出异常。建议对内容进行分页,每次加载不超过1-1.5个屏幕的内容。I had also issue related to same with Recyclerview without animation

nhhxz33t

nhhxz33t3#

android:hardwareAccelerated="false"添加到manifest中的application标记解决了我的问题
编辑:请参阅@inteist的评论

c9qzyr3d

c9qzyr3d4#

当我试图创建一个简单的视图时,我也遇到了这个问题。我只需要在它的xml中设置android:forceHasOverlappingRendering="false"。请注意,它仅适用于API级别24。

bz4sfanl

bz4sfanl5#

在我的情况下,这是一个愚蠢的错误,Android Studio没有显示任何警告。
我有一个id为@+id/myView的视图,但我也在同一个视图/标签中设置了android:layout_below=@id/myView
就像这样:

<TextView
    android:id="@+id/textview"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_below="@id/textview" /> <!-- The traitor :( -->

相关问题