Android TaskStackBuilder addNextIntentWithParentStack 冻结应用程序

Android TaskStackBuilder addNextIntentWithParentStack freezes app

我试图在我的应用程序中显示来自 BroadcastReceiver 的通知,但创建父堆栈给我带来了问题。当我调用以下代码时,应用程序只是冻结(无一例外,只是冻结)

Intent notifIntent = new Intent(context, NotificacionesActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addNextIntentWithParentStack(notifIntent); // <- code execution freezes here
PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

这基本上是 android 文档的复制粘贴:https://developer.android.com/training/notify-user/navigation#build_a_pendingintent_with_a_back_stack

几秒钟后输出显示如下

Thread[3,tid=5321,WaitingInMainSignalCatcherLoop,Thread*=0xf005cc00,peer=0x16940088,"Signal Catcher"]: reacting to signal 3
Wrote stack traces to '[tombstoned]'

然后开始发送垃圾邮件

Background concurrent copying GC freed 87185(5MB) AllocSpace objects, 0(0B) LOS objects, 16% free, 30MB/36MB, paused 223us total 101.944ms

我已经查过了,似乎应该在 /data 的某处保存一个 tomstone 跟踪,但我在那里找不到任何东西,我认为日志永远不会被保存。 activity 在清单中声明了 parentActivityName。

<activity
   android:name=".activity.NotificacionesActivity"
   android:parentActivityName=".activity.MainActivity"
   android:theme="@style/AppTheme.NoActionBar"
   android:screenOrientation="portrait"
   />

如果我不创建挂起的意图,就会显示通知,所以我很确定上面的代码是导致问题的代码。 我试过 Api 28 和 29 (android 9 & 10),卸载应用程序,甚至创建一个新的虚拟设备,结果都是一样的,有趣的是,这段代码是一次工作,现在它只是没有。

已解决 看来我的 mainActivity 本身就是 parentActivityName,所以创建堆栈会导致递归循环哈哈。