android - 来自 android-beacon-library 的 ScanJob 中的 ConcurrentModificationException
问题描述
我有一个应用程序正在扫描BLE devices
. 在 Crashlytics 中,我注意到以下崩溃:
Fatal Exception: java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.next + 860(ArrayList.java:860)
at org.altbeacon.beacon.service.ScanJob$1.run + 81(ScanJob.java:81)
at java.lang.Thread.run + 764(Thread.java:764)
pool-27-thread-2
at java.lang.Object.wait(Object.java)
at java.lang.Thread.parkFor$ + 2137(Thread.java:2137)
at sun.misc.Unsafe.park + 358(Unsafe.java:358)
at java.util.concurrent.locks.LockSupport.park + 190(LockSupport.java:190)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await + 2059(AbstractQueuedSynchronizer.java:2059)
at java.util.concurrent.LinkedBlockingQueue.take + 442(LinkedBlockingQueue.java:442)
at java.util.concurrent.ThreadPoolExecutor.getTask + 1087(ThreadPoolExecutor.java:1087)
at java.util.concurrent.ThreadPoolExecutor.runWorker + 1147(ThreadPoolExecutor.java:1147)
at java.util.concurrent.ThreadPoolExecutor$Worker.run + 636(ThreadPoolExecutor.java:636)
at java.lang.Thread.run + 764(Thread.java:764)
ParseCommandCache.runLoop()
at java.lang.Object.wait(Object.java)
at com.parse.ParseCommandCache.runLoop + 664(ParseCommandCache.java:664)
at com.parse.ParseCommandCache.access$000 + 40(ParseCommandCache.java:40)
at com.parse.ParseCommandCache$2.run + 188(ParseCommandCache.java:188)
崩溃似乎只发生在运行 Android 8+ 的设备上
有没有人遇到过这个错误并知道如何解决?
该应用程序使用 liborg.altbeacon:android-beacon-library
版本 2.16.3
解决方案
这似乎是库中一个罕见的错误,当在后台通过意图交付新的后台扫描结果时,它将在竞争条件下崩溃。此方法中的集合必须在返回之前复制,以修复错误:
请在库的 GitHub 存储库上打开一个新问题(点击该链接)并粘贴指向该问题的链接。我们将在下一个库版本中修复。
推荐阅读
- python - Django sorl:没有足够的值来解包(预期 2,得到 1)
- reactjs - Redux 错误:操作必须是普通对象。使用自定义中间件进行异步操作
- python - ModuleNotFoundError:没有名为“load_data”的模块
- android - 谷歌表格不适用于发布 apk 颤振
- php - 如何使 userEmail 外键连接到 Tbluser 模型中的 emailId
- c# - 在 C# 中拆分大字符串并将其中的值添加到列表中
- python - 没有在python的新文件中写入所有输出行
- c++ - 将子类转换为父类 C++
- instagram - Instagram 访问令牌无效错误
- python - python导入功能不导入程序