创建 LinearLayout 时的 ArrayIndexOutOfBoundsException

ArrayIndexOutOfBoundsException when Creating LinearLayout

提问人:박찬준 提问时间:9/6/2021 更新时间:9/5/2023 访问量:170

问:

你好?我正在调试一些与Android小部件相关的问题。

我的应用程序正在使用 Glide 库提供的两个线程来制作原始小部件图像文件和缩略图小部件图像文件。

在制作小部件图像文件时,我的应用会创建一些布局,例如 LinearLayout,并将其绘制在位图 (ex) 中,并将位图保存到文件中。layout.draw(Canvas(bitmap))

它几乎可以在时间内正常工作,但有时会报告一些问题,如下所示。

java.lang.ArrayIndexOutOfBoundsException: length=3; index=3
  at android.util.ContainerHelpers.binarySearch(ContainerHelpers.java:28)
  at android.util.SparseArray.get(SparseArray.java:120)
  at android.util.SparseArray.get(SparseArray.java:111)
  at android.view.ViewConfiguration.get(ViewConfiguration.java:494)
  at android.view.View.<init>(View.java:5432)
  at android.view.View.<init>(View.java:5624)
  at android.view.ViewGroup.<init>(ViewGroup.java:687)
  at android.widget.LinearLayout.<init>(LinearLayout.java:254)
  at android.widget.LinearLayout.<init>(LinearLayout.java:250)
  at android.widget.LinearLayout.<init>(LinearLayout.java:246)
  at android.widget.LinearLayout.<init>(LinearLayout.java:242)

当我像这样制作 LinearLayout 时,会抛出此异常LinearLayout(context).apply { orientation = LinearLayout.VERTICAL }

我怀疑有一些并发性。在多线程中创建 LinearLayout 有问题吗?

android-widget android-linearlayout android-glide arrayindexoutofboundsexception

评论

0赞 aref behboodi 9/6/2021
您只能在主线程中创建视图。请附上您的代码,如果您使用列表创建布局,则必须检查其大小。
0赞 박찬준 9/6/2021
@arefbehboodi 我没有刷新工作线程中的 ui。我只是制作 LinearLayout 并向 LinearLayout 添加一些子视图并将其绘制到位图中并保存。我正在编辑的代码是我公司的代码,所以我不能不把它附加到这个问题中。

答:

0赞 VKostenc 9/5/2023 #1

链接到完整答案。

如果很快 - 问题出在 SparseArray 内部。尝试将库更新到最新版本或暂时降级版本并监视更新。