33

Activity_1经过很多步骤后,我说

Activity_2 > Activity_3 .... 在某些情况下,Activity_n我更改了一些相关的数据Activity_1并使用它来调用它

Intent intent = new Intent(Activity_n.this, Activity_1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

刷新内容。但后来我可以一直回到Activity_1我开始的地方,那里有旧数据。

相反,我希望使用上面的代码调用初始Activity_1的 's 。onResume()或适当的标志

FLAG_ACTIVITY_CLEAR_TOP

考虑一个由以下活动组成的任务:A、B、C、D。如果 D 调用 startActivity() 并带有解析为活动 B 的组件的 Intent,则 C 和 D 将完成并且 B 接收给定的 Intent,从而导致堆栈现在是:A,B。

这就是文档所说的,但不是我得到的。

4

3 回答 3

49

您可以添加这两行并尝试

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

将其写入 Activity 内的清单文件中

<activity
     android:name=".SettingsActivity"
     android:launchMode="singleInstance"
     android:screenOrientation="portrait" >
</activity>

“singleTask”和“singleInstance”活动只能开始一个任务。它们始终位于活动堆栈的根部。此外,设备一次只能保存一个活动实例——只有一个这样的任务。

您可以使用 SingleTask 或 SingleInstance

“singleTask” - 系统在新任务的根目录创建活动并将意图路由到它。但是,如果活动的实例已经存在,系统会通过调用其 onNewIntent() 方法将意图路由到现有实例,而不是创建一个新实例。

“singleInstance” - 与“singleTask”相同,只是系统不会在持有该实例的任务中启动任何其他活动。活动始终是其任务的唯一且唯一的成员。

请参阅此链接 http://developer.android.com/guide/topics/manifest/activity-element.html

于 2013-03-12T10:53:19.187 回答
19
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

访问:http: //developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_REORDER_TO_FRONT

于 2013-07-11T15:31:55.210 回答
8

如果存在则从 backstack 中恢复Activity,如果不存在则创建一个新的

android:launchMode="singleTask"

将此行添加到您应用的 AndroidManifest.xml 并以正常的Intent.

于 2016-10-24T13:49:05.520 回答