我想在以下情况下恢复活动,
活动A调用活动B. 活动B调用活动C
现在我想转到活动A,但不想创建新的使用现有实例。
我尝试了Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
,但它只重新排序,如果我按回我的活动C,我不想这样做。
T想要在启动活动A时清除活动B和活动C.
请帮忙......
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以通过在清单文件中声明SingleInstance
来使您的活动成为launchMode
,因此每次都不会创建活动。
您调用活动B和C的几何意图使用标记NO_HISTORY
。所以当你按回键时,它们不会堆叠。
读取意图 - 意图标志 - 来自开发人员文档的清单文件。
答案 2 :(得分:0)
您应该熟悉activity lifecycle 和Activity class一样 以及Bundle类 以及关于该主题的local discussion,其中包含示例代码。 使用SingleInstance可以提供帮助,但您可能会遇到操作系统在后台查杀应用程序的风险。在数据关闭之前保存数据将允许您通过推进到其他活动或新的无关应用程序(如果手机响铃)重建应用程序所处的状态。
答案 3 :(得分:0)
您需要设置FLAG_ACTIVITY_CLEAR_TOP
和FLAG_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);