喂?我正在调试一些与 Android 小部件相关的问题。
我的应用程序使用 Glide 库提供的两个线程来制作原始小部件图像文件和缩略图小部件图像文件。
制作小部件图像文件时,我的应用程序创建一些布局,例如 LinearLayout 并将其绘制在位图中(例如)
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有什么问题吗?
链接到完整答案。
如果很快 - 问题出在 SparseArray 内部。尝试将库更新到最新版本或暂时降级版本并观察更新。