我有一个启动 Activity (C) 的通知,我为其构建了一个回栈以遵守 Android 准则,回栈:
C
B
A
用户单击通知,它打开 C,然后如果他们按回它转到 B,然后到 A,然后到主屏幕。这按预期工作。
如果用户单击通知(打开 C),然后按主页按钮转到主屏幕,然后从主屏幕启动应用程序,它将打开 A,而不是我期望和想要的 C。如果他们然后(从 A)按回,它会转到 C,然后是 B,然后是 A。因此,当他们在这种情况下从主屏幕启动应用程序时,它会创建一个新的 Activity A 并将其放在现有堆栈的顶部而不是打开现有堆栈 (C) 的顶部,因此堆栈看起来像:
A
C
B
A
我的代码为通知创建了后台堆栈和启动意图:
/* Build the back stack for navigation */
TaskStackBuilder stackBuilder = TaskStackBuilder.create( this );
/* Pairing List */
Intent intent = new Intent( this, A.class );
intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP );
stackBuilder.addNextIntent( intent );
/* Pairing */
intent = new Intent( this, B.class );
intent.putExtra( "id", briefing.getLeg().getDay().getPairing().getId() );
stackBuilder.addNextIntent( intent );
/* Create a launch intent and notification */
intent = new Intent( this, C.class );
intent.putExtra( "date", briefing.getLeg().getDay().getDate() );
intent.putExtra( "id", briefing.getLeg().getId() );
intent.putExtra( "briefing", true );
stackBuilder.addNextIntent( intent );
pIntent = stackBuilder.getPendingIntent( 0, PendingIntent.FLAG_ONE_SHOT );
我的清单中的活动声明:
<activity android:name=".C" />
<activity
android:name=".A"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".B" />
我认为这是我在意图上设置的标志的问题,但我不确定我需要更改什么。有任何想法吗?