致命异常:java.lang.SecurityException:!@Too在Firebase中注册的许多警报(500)

Vla*_*vić 1 android galaxy firebase firebase-cloud-messaging

我遇到了崩溃:

Fatal Exception: java.lang.SecurityException: !@Too many alarms (500) registered from pid 27251 uid 11383
       at android.os.Parcel.readException(Parcel.java:1620)
       at android.os.Parcel.readException(Parcel.java:1573)
       at android.app.IAlarmManager$Stub$Proxy.set(IAlarmManager.java:217)
       at android.app.AlarmManager.setImpl(AlarmManager.java:484)
       at android.app.AlarmManager.set(AlarmManager.java:260)
       at com.google.firebase.iid.FirebaseInstanceIdService.zzagl(Unknown Source)
       at com.google.firebase.iid.FirebaseInstanceIdService.zzd(Unknown Source)
       at com.google.firebase.iid.FirebaseInstanceIdService.zza(Unknown Source)
       at com.google.firebase.iid.FirebaseInstanceIdService.zzm(Unknown Source)
       at com.google.firebase.iid.zzb$2.run(Unknown Source)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
       at java.lang.Thread.run(Thread.java:818)
Run Code Online (Sandbox Code Playgroud)

正如您所见,崩溃是在Firebase库中.我读了其他的答案,但所有这些都是关于代码中的警报的使用,就像这个.我只使用Firebase库进行消息,分析和远程配置.

compile "com.google.firebase:firebase-core:$firebaseLibVersion"
compile "com.google.firebase:firebase-config:$firebaseLibVersion"
compile "com.google.firebase:firebase-messaging:$firebaseLibVersion"

ext {
    firebaseLibVersion = '9.6.1'
}
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,问题只发生在三星设备上.所以,我知道为什么它会在三星设备上发生,但我不知道如何修复它.

Fra*_*len 5

来自firebase-talk邮件列表:

我们找到了这个bug的原因.在同步(未)订阅的主题列表时,FCM SDK可能会卡住.如果设备在subscribeToTopic/unsubscribeFromTopic操作期间处于脱机状态,则可能会发生此错误,并且可能导致特定三星设备上的电池耗尽和应用程序崩溃.退出此状态的唯一方法是将手机连接到互联网并打开应用程序以允许主题列表与服务器同步.

我们接近修复,但由于我们的发布周期,我们将至少在几周内没有新的SDK.目前,您可以按照Mihir的建议降级到9.4.0.