Android WorkManager在某些三星设备上引发SecurityException

Android WorkManager在某些三星设备上引发SecurityException,android,samsung-mobile,android-workmanager,securityexception,Android,Samsung Mobile,Android Workmanager,Securityexception,说明 如果强制停止,WorkManager库将安排和报警跟踪。这发生在将在WorkManager初始化期间运行的ForceStopRunnable类(另请参见:)中。在一些三星设备上,这将触发SecurityException,据我所知,当你的应用程序调度超过500个警报时,三星会抛出此异常。该应用程序没有满是警报,因此我认为FLAG\u UPDATE\u CURRENT将在已取消版本的内存中保留一个旧实例。但我还没能复制这个,而且我也没有看到预定的多个警报副本 仅在SDK 28上发生,在SDK

说明

如果强制停止,WorkManager库将安排和报警跟踪。这发生在将在WorkManager初始化期间运行的
ForceStopRunnable类(另请参见:)中。在一些三星设备上,这将触发SecurityException,据我所知,当你的应用程序调度超过500个警报时,三星会抛出此异常。该应用程序没有满是警报,因此我认为
FLAG\u UPDATE\u CURRENT
将在已取消版本的内存中保留一个旧实例。但我还没能复制这个,而且我也没有看到预定的多个警报副本

仅在SDK 28上发生,在SDK 29上发生一些罕见的情况

问题

这里的其他人是否有与WorkManager库相同的工作经验,并且知道如何重现此问题

这个问题有解决办法吗

Crashlog

java.lang.SecurityException:android.os.Parcel.createException(Parcel.java:1966)android.os.Parcel.readException(Parcel.java:1934)android.os.Parcel.readException(Parcel.java:1884)android.app.IAlarmManager$Stub$Proxy.set(IAlarmManager.java:240)android.app.AlarmManager.setImpl(AlarmManager.java:722)在androidx.work.impl.utils.ForceStopRunnable.setAlarm(ForceStopRunnable.java:292)的androidx.work.impl.utils.ForceStopRunnable.isforceStopRunnable(ForceStopRunnable.java:151)的androidx.work.impl.utils.ForceStopRunnable.ForceStopRunnable(ForceStopRunnable.java:169)在androidx.work.impl.utils.ForceStopRunnable.run(ForceStopRunnable.java:101)在androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)在java.lang.Thread.run(Thread.java:764)原因:android.os.RemoteException:at com.android.server.SamsungAlarmManagerService.checkMaliciousAppLocked(SamsungAlarmManagerService.java:333)at com.android.server.AlarmManagerService.setImpl(AlarmManagerService.java:1758)at com.android.server.AlarmManagerService$2.set(AlarmManagerService.java:2100)在android.os.Binder.execTransact(Binder.java:739)的android.app.IAlarmManager$Stub.onTransact(IAlarmManager.java:92)

来源:

如果应用程序创建太多警报,通常会发生这种情况。这不是
WorkManager
问题。

感谢您的回复,我没有从应用程序中的其他警报中收到任何崩溃。我看到的唯一崩溃来自ForceStopRunnable:请参阅androidx.work.impl.utils.ForceStopRunnable.setAlarm(ForceStopRunnable.java:292)ForceStopRunnable是WorkManager的一部分。您如何解释?这里的警报本身有点不相关。只有当您计划了>500个警报时才会发生此崩溃。可能是
WorkManager
计划了第500个警报。但这仍然意味着应用程序计划了其余的警报(这里的问题是什么)@Rahul这并不能回答问题,在我们的例子中,即使我们使用ExistingWorkPolicy.REPLACE,问题仍然存在于三星。您对此有何建议?我们是否应该使用ExistingWorkPolicy.KEEP?尝试调度>500个作业,您应该能够复制它。查看源代码,文件ExposureNotificationJob.kt schedules job没有ID和更新/取消标志。你真的打算这样做吗?这可能是安排太多作业的原因吗?