IllegalStateException AlarmManager 在 Android 10 上达到并发警报的最大限制 500

rd7*_*773 11 android alarmmanager android-pendingintent android-10.0

使用带有待处理广播的警报,这一直按预期工作,直到最近在 Android 10 上运行的 RealMe 设备在 Android 7.1.1 上运行的少数OPPO 设备开始出现崩溃

碰撞 : IllegalStateException: Maximum limit of concurrent alarms 500 reached for uid on AlarmManager.setRepeating()

堆栈跟踪 :

Caused by java.lang.IllegalStateException: Maximum limit of concurrent alarms 500 reached for uid: u0a336, callingPackage: com.example.your.app
       at android.os.Parcel.createException + 2095(Parcel.java:2095)
       at android.os.Parcel.readException + 2055(Parcel.java:2055)
       at android.os.Parcel.readException + 2003(Parcel.java:2003)
       at android.app.IAlarmManager$Stub$Proxy.set + 320(IAlarmManager.java:320)
       at android.app.AlarmManager.setImpl + 709(AlarmManager.java:709)
       at android.app.AlarmManager.setRepeating + 454(AlarmManager.java:454)
Run Code Online (Sandbox Code Playgroud)

通过使用设置闹钟:

val pendingIntent = PendingIntent.getBroadcast(
                        applicationContext, 0,
                        Intent(applicationContext, MyBroadcastReceiver::class.java),
                        PendingIntent.FLAG_UPDATE_CURRENT )

alarmManager.setRepeating(
                AlarmManager.ELAPSED_REALTIME_WAKEUP,
                INITIAL_DELAY,
                ONE_MINUTE_MILLIS,
                pendingIntent )
Run Code Online (Sandbox Code Playgroud)

也试过:

alarmManager.setExact(
                AlarmManager.ELAPSED_REALTIME_WAKEUP,
                INITIAL_DELAY,
                pendingIntent )
Run Code Online (Sandbox Code Playgroud)

也试过有和没有:

  1. 旗帜 PendingIntent.FLAG_CANCEL_CURRENT
  2. 设置前取消闹钟
  3. 设置前取消挂起的意图

此设备和 android 版本是否特定崩溃(在 RealMe Android 10 设备上为 98%),或者我在这里遗漏了什么可以防止发生此崩溃?