java.lang.RuntimeException:WakeLock 未锁定 wake:com。google.firebase.messaging

java.lang.RuntimeException: WakeLock under-locked wake:com.google.firebase.messaging

我正在使用 FCM (Firebase Cloud Messaging) 发送数据消息 通过 topics.

给客户

我最近看到很少发生此错误/崩溃。

完整日志:

Fatal Exception: java.lang.RuntimeException: WakeLock under-locked wake:com.google.firebase.messaging
   at android.os.PowerManager$WakeLock.release(PowerManager.java:1619)
   at android.os.PowerManager$WakeLock.release(PowerManager.java:1589)
   at android.os.PowerManager$WakeLock.run(PowerManager.java:1484)
   at android.os.Handler.handleCallback(Handler.java:808)
   at android.os.Handler.dispatchMessage(Handler.java:101)
   at android.os.Looper.loop(Looper.java:166)
   at android.app.ActivityThread.main(ActivityThread.java:7529)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)

SideNode:它似乎只发生在 HUAWAI 设备 Android 8.

客户: 客户端将收到那些数据消息,纠缠数据部分, 快速 API 调用并最终向用户显示通知。

这通常很有效,但现在我看到了那些奇怪的崩溃。

有人知道这里发生了什么吗?

另外 在 android 源代码中我可以看到这可能会被抛出, 如果正在释放唤醒锁,尽管不再有锁。 这就是为什么它被称为 under-locked 我想。

Source Code PowerManager Line:2222

根据 Firebase 变更日志云消息传递版本 20.1.4 和 20.1.5 导致此错误,您需要升级到 20.1.6:

https://firebase.google.com/support/release-notes/android#messaging_v20-1-5