Android REORDER_TO_FRONT 用户新 Intent
Android REORDER_TO_FRONT user new Intent
当我使用 FLAG_ACTIVITY_REORDER_TO_FRONT
启动 Activity A 并调用 Intent intent = getIntent();
时,我得到了用于首次创建 Activity 的 Intent 而不是使用 FLAG_ACTIVITY_REORDER_TO_FRONT
标志创建的那个。
我想根据 Intent 的 Extras 更改显示。有什么方法可以获取新创建的 Intent 或更改旧 Intent 的 Extras 吗?
编辑:请求示例
从 Activity A 开始使用 Intent A 和 Extras A -> 转到另一个 Activity X -> 使用 Intent B (FLAG_ACTIVITY_REORDER_TO_FRONT
) 和 Extras 调用 Activity A B
现在在ActivityA中,我想在调用getIntent()
时得到Intent B,但我总是得到Intent A。也可以,只需将A中的Extras更改即可到 B
好的,我想我有办法了。如果你用标志 FLAG_ACTIVITY_CLEAR_TOP
启动 activity A 那么它将破坏 Activity A 顶部的后台堆栈上的任何东西(在这种情况下为 Activity X)并启动 Activity 一个新的意图。我在我的机器上试过了,它成功了。
如果你想让 Activity X 留下来,这样你的后栈看起来像 "X -> A" 那么你可以覆盖 Activity A 中的 onNewIntent()
来捕捉新的意图并设置它并继续使用 FLAG_ACTIVITY_REORDER_TO_FRONT
来启动 activity:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
// Parse intent info both here and in onCreate()!
}
请注意,如果您这样做,并在 activity X 和 A 之间来回切换,您的后栈将如下所示:"X -> X -> X -> .... -> A" 因为 X 会在后栈上冷却,而 A 只会继续往前走。
当我使用 FLAG_ACTIVITY_REORDER_TO_FRONT
启动 Activity A 并调用 Intent intent = getIntent();
时,我得到了用于首次创建 Activity 的 Intent 而不是使用 FLAG_ACTIVITY_REORDER_TO_FRONT
标志创建的那个。
我想根据 Intent 的 Extras 更改显示。有什么方法可以获取新创建的 Intent 或更改旧 Intent 的 Extras 吗?
编辑:请求示例
从 Activity A 开始使用 Intent A 和 Extras A -> 转到另一个 Activity X -> 使用 Intent B (FLAG_ACTIVITY_REORDER_TO_FRONT
) 和 Extras 调用 Activity A B
现在在ActivityA中,我想在调用getIntent()
时得到Intent B,但我总是得到Intent A。也可以,只需将A中的Extras更改即可到 B
好的,我想我有办法了。如果你用标志 FLAG_ACTIVITY_CLEAR_TOP
启动 activity A 那么它将破坏 Activity A 顶部的后台堆栈上的任何东西(在这种情况下为 Activity X)并启动 Activity 一个新的意图。我在我的机器上试过了,它成功了。
如果你想让 Activity X 留下来,这样你的后栈看起来像 "X -> A" 那么你可以覆盖 Activity A 中的 onNewIntent()
来捕捉新的意图并设置它并继续使用 FLAG_ACTIVITY_REORDER_TO_FRONT
来启动 activity:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
// Parse intent info both here and in onCreate()!
}
请注意,如果您这样做,并在 activity X 和 A 之间来回切换,您的后栈将如下所示:"X -> X -> X -> .... -> A" 因为 X 会在后栈上冷却,而 A 只会继续往前走。