9

所以我有一个通过整个应用程序扩展的抽象类,它覆盖后退键以将 Activity A 重新排序到前面(带有标志)。

所以,它会是:

A > B > 任何地方,后退键应该带我回到 A

我正在使用 FLAG_ACTIVITY_CLEAR_TOP,但由于某种原因它完全刷新了 A,我不希望这样。

所以:Flag_activity_clear_top 正在重新加载 onCreate() 而不是 onResume()。是什么赋予了?

4

3 回答 3

25

如果您希望 Activity 在不重新启动的情况下被带到顶部,则在清单中将 Activity 的 launchMode 设置为singleTop。当活动被带到顶部时,您将收到对onNewIntent的调用。onNewIntent 在 onResume 之前调用。如果您只希望特定意图的此行为,您可以使用addFlags调用而不是清单将FLAG_ACTIVITY_SINGLE_TOP(除了 FLAG_ACTIVITY_CLEAR_TOP)添加到意图。

于 2012-09-24T20:19:11.233 回答
1
Intent intent = new Intent(CurrentActivity.this, ActivityNeedOnTop.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
                    startActivity(intent);
                    CurrentActivity.this.finish();
于 2018-07-31T10:31:30.013 回答
0

来自FLAG_ACTIVITY_CLEAR_TOP的 API 文档

For example, consider a task consisting of the activities:
A, B, C, D. If D calls startActivity() with an Intent that
resolves to the component of activity B, then C and D 
will be finished and B receive the given Intent,
resulting in the stack now being: A, B.

**The currently running instance of activity B in the above example
will either receive the new intent you are starting here in its
onNewIntent() method, or be itself finished and restarted with the new intent.**

所以我认为你的活动本身已经完成并重新启动。

于 2012-09-25T17:43:08.540 回答