我想在以下情况下恢复活动,
活动 A 调用活动 B 活动 B 调用活动 C
现在我想去活动 A 但不使用现有实例创建新的。
我已经尝试过,Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
但它只是重新排序,如果我按下回,我就在我不想去的活动 C 上。
T 想在启动 Activity A 的同时清除 Activity B 和 Activity C。
请帮忙...
我想在以下情况下恢复活动,
活动 A 调用活动 B 活动 B 调用活动 C
现在我想去活动 A 但不使用现有实例创建新的。
我已经尝试过,Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
但它只是重新排序,如果我按下回,我就在我不想去的活动 C 上。
T 想在启动 Activity A 的同时清除 Activity B 和 Activity C。
请帮忙...
您可以通过在清单文件中SingleInstance
声明来创建活动 A launchMode
,因此每次都不会创建活动。
您在调用活动 B 和 C 时使用 FlagNO_HISTORY
的意图。所以当你按下后退键时,它们不会在堆栈上。
阅读意图 - 意图标志 - 来自开发人员文档的清单文件。
您需要设置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);
您应该熟悉Activity 生命周期 以及Activity 类 以及 Bundle 类以及有关该主题的本地讨论,其中包括示例代码。使用 SingleInstance 会有所帮助,但您可能会面临操作系统在后台杀死您的应用程序的风险。在关闭之前保存数据将允许您通过前进到您的其他活动之一或新的不相关应用程序(例如电话响铃)来重建应用程序在用户将其置于后台时的状态。