小米 Android 11 SecurityException 创建了太多 PendingIntent

问题描述 投票:0回答:1

自今年年初以来,我们的应用程序一直在遭受这种新型崩溃。

Firebase 显示它仅在搭载 Android 11 的小米上重复。它在应用程序的不同部分重复。而且它似乎与应用程序代码无关。所以我认为这与小米 Android 11 更新有关,代码损坏或新限制没有明确解释。

明显的想法是待处理意图创建垃圾邮件,但我找不到任何证据表明该方法被频繁调用,只有几次。

有人想出解决办法吗? 抑制 throwable 不是一个好的选择,因为该功能不起作用。

代码片段:

val intent = Intent(context, SomeClass::class.java).apply {
    this.action = action
    this.putExtra(EXTRA_IDENTITY, identity)
}
PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)

堆栈跟踪:

Fatal Exception: java.lang.SecurityException: Too many PendingIntent created for uid 10273, aborting Key{broadcastIntent pkg=<package> intent=act=<action name> cmp=<class> flags=0x0 u=0} requestCode=0
   at android.os.Parcel.createExceptionOrNull(Parcel.java:2376)
   at android.os.Parcel.createException(Parcel.java:2360)
   at android.os.Parcel.readException(Parcel.java:2343)
   at android.os.Parcel.readException(Parcel.java:2285)
   at android.app.IActivityManager$Stub$Proxy.getIntentSenderWithFeature(IActivityManager.java:6898)
   at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:578)
   at android.app.PendingIntent.getBroadcast(PendingIntent.java:561)
   ...
android android-pendingintent xiaomi
1个回答
0
投票

我会回答这个问题,因为我还没有收到任何来自SO的答案,并且我们的应用程序在代码的不同部分发生了崩溃,没有任何明显的联系。

所以,你发现这个问题有这样的症状:

  • 仅在小米11 Android 上出现崩溃
  • 与问题中发布的堆栈跟踪相同

我想说这是由小米11更新的错误或“限制功能”引起的。

因此,你能做的最好的事情就是用 try-catch 包裹它

P.s.如果您的崩溃看起来有所不同,您可能需要检查其他答案。 Try catch 很好,但理想情况下,您希望解决其背后的原因。

© www.soinside.com 2019 - 2024. All rights reserved.