如果已经存在于后台堆栈中,则恢复活动而不是启动

比方说,经过很多步骤,我有一个Activity_1

Activity_2 > Activity_3 ….我更改了与Activity_1相关的一些数据并使用它来调用它

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

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

相反,我希望使用上面的代码调用初始Activity_1onResume() 。 或适当的旗帜

FLAG_ACTIVITY_CLEAR_TOP

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

那是’文档说的,但不是我得到的。

Solutions Collecting From Web of "如果已经存在于后台堆栈中,则恢复活动而不是启动"

您可以添加这两行并尝试

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

将此内容写入Activity中的清单文件中

   

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

您可以使用SingleTask或SingleInstance

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

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

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

 intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 

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

如果存在则从Backstack恢复Activity ,否则创建一个新Activity

 android:launchMode="singleTask" 

将此行添加到您应用的AndroidManifest.xml中,并使用正常的Intent启动活动。