Android 单击推送通知时如何正确进行重定向

Android 单击推送通知时如何正确进行重定向,android,notifications,Android,Notifications,当通知到来时,我对android待定的意图感到不安 我的应用程序的调用堆栈类似于A>B>C。 因此,没有A,B永远无法创建,没有B,C永远无法创建 让我们调用活动D,它将从通知中午餐。 然后,当用户收到关于D的通知时,我希望它在下面 案例1 A(MainActivity)是顶级活动,调用堆栈应为A>D 案例2 B(SomeActivity)是顶级活动,调用堆栈应该是A>B>C 案例3C(另一个活动)是顶层活动,调用堆栈应该是A>B>C>D 案例4 D是顶级活动,销毁旧D并创建新D。 案例5应用程

当通知到来时,我对android待定的意图感到不安

我的应用程序的调用堆栈类似于A>B>C。 因此,没有A,B永远无法创建,没有B,C永远无法创建

让我们调用活动D,它将从通知中午餐。 然后,当用户收到关于D的通知时,我希望它在下面

案例1 A(MainActivity)是顶级活动,调用堆栈应为A>D

案例2 B(SomeActivity)是顶级活动,调用堆栈应该是A>B>C

案例3C(另一个活动)是顶层活动,调用堆栈应该是A>B>C>D 案例4 D是顶级活动,销毁旧D并创建新D。 案例5应用程序终止,调用堆栈应为A>D

看起来很简单。但很难做到正确。 我的密码是

Intent intent = D.getIntent(context, model.getTitle(), model.getId(), Intent.FLAG_ACTIVITY_NEW_TASK);
NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle();
    PendingIntent mBoxPendingIntent = PendingIntent.getActivity(context, (int) model.getId(), intent, PendingIntent.FLAG_UPDATE_CURRENT);
    NotificationCompat.Builder b = new NotificationCompat.Builder(context)
            .setStyle(bigTextStyle)
            .setAutoCancel(true)
            .setTicker(tickerText)
            .setSmallIcon(smallIconRes)
            .setContentTitle(model.getTitle())
            .setContentText(model.getMessage())
            .setContentIntent(mBoxPendingIntent)
            .setWhen(when)
            .setLights(0xFFBD5475, 500, 3000);
现在的问题是案例5。 如果在应用程序终止时发出触控通知,则D将独立启动,而无需; 我不知道当用户触摸通知时,设备是否会有活动A。
我该怎么办?

您非常需要使用来构建您的活动堆栈@X3Btel的可能副本,非常感谢。它起作用了。但还有一个问题。我必须在D上创建一个再次按下后退按钮吗?情况是这样的。当前调用堆栈是A>D。现在获取新的通知,该通知将打开新的D而不是旧的D。按下通知,调用堆栈仍然是A>D。但是当我返回时,会重新创建A。我希望它只是恢复。这里是A.
的活动元,它也做错了。当返回堆栈是A>B>C时。当我返回时,它总是返回A(重新创建)并清除B,C。它应该是返回C。这是我的代码
pendingent pendingent=TaskStackBuilder.create(context).addParentStack(A).addnextint(A).addnextint(D).getpendingent(0,pendingent.FLAG_UPDATE_CURRENT)