0

我希望继续在以下情况下活动,如何恢复活动从活动旁边的孩子

活动A调用活动B 活动B调用活动Ç

现在我想去到活动A,但不创建新的使用现有的实例。

我试过Intent.FLAG_ACTIVITY_REORDER_TO_FRONT,但它只是重新排序,如果我按回来我在活动C,我不想成为。

吨要清除活动B和活动C,而启动活动A.

请帮助...

回答

0

可以通过声明在launchMode使活动为您提供SingleInstance清单文件,所以每次活动都不会被创建。

你打电话给活动B和C的意思是使用标志NO_HISTORY。所以当你按下回车键时,它们将不会堆叠。


阅读意图 - 意图标志 - 开发人员文档的清单文件。

+0

它从意图接收数据这样的广告ID来显示细节,所以它不能是单一实例。 – MobileEvangelist

+0

你想:“活动A但不能创建新的使用现有的实例。“ – MKJParekh

+0

我试过这个FLAG_ACTIVITY_NO_HISTORY,但是当我从第二个活动B到活动C时,它已经崩溃了。我不知道 – MobileEvangelist

0

你应该熟悉activity lifecycle 还有Activity class 还有捆绑类 这local discussion上,其中包括示例代码的主题。 使用SingleInstance可以帮助您,但您有可能在后台操作系统中杀死您的应用程序。在关闭数据之前保存数据将允许您重建应用程序在用户将其放入后台时通过前进到其他活动或新的不相关应用程序(如电话响铃)的状态。

+0

出于某种原因,我不被允许发布与链接的答案。 [本地讨论](http://stackoverflow.com/questions/151777/saving-activity-state-in-android)[Bundle](http://developer.android.com/reference/android/os/Bundle.html )[Activity](http://developer.android.com/reference/android/app/Activity.html)[lifecycle](http://developer.android.com/training/basics/activity-lifecycle/index.html ) –

+0

感谢您的回复,但不明白你想指出什么。 – MobileEvangelist

+0

@Jay您可以重写生命周期方法来保存应用程序中的数据,以便在恢复时它将与用户离开时完全相同。如果正确完成,如果活动在后台暂停,它将被置于前面而不是重新启动,并且如果它在后台暂停时被杀死,它将被重新启动,并且以前的状态可以在没有用户的情况下被重建做任何额外的事情。设置[launchmode](http://developer.android.com/guide/topics/manifest/activity-element.html#lmode)并保存你的Bundle。阅读我上面发布的链接。 –

0

您需要设置FLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_SINGLE_TOP有活动,B和C从堆栈中移除,并返回到活动A.喜欢这张现有实例:

Intent intent = new Intent(this, ActivityA.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP); 
startActivity(intent);