不要破坏安卓活动,也不应该出现在历史记录中



我对Android和活动的过渡有问题。 我想要的是以下内容:

  1. 主活动调用活动 B。
  2. 活动 B 调用主活动(例如,通过"后退"按钮,同一实例(
  3. MainActivity 调用活动 B 的同一实例(同一实例很重要,因为活动 B 需要很长时间才能启动(
  4. 活动 B 调用主活动(例如,通过"后退"按钮,同一实例(
  5. 按下主活动后退按钮并终止应用程序。

我尝试过:

主要活动:

android: launch mode = "single task"

开始活动 B:

Intent intent = new Intent (this, B.class);
this.startActivity (intent);

活动二:

android: launch mode = "SingleInstance"

启动主活动:

Intent callerIntent = new Intent (this, MainActivity.class);
CallerIntent.addFlags (Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
start activity (caller intent);

不幸的是,第 5 点不起作用。

我找了很久,可惜什么也没找到,也没有搜索瓶子的话。我希望有人可以帮助我。

我还有一个小型演示应用程序,您可以在其上测试行为: AndroidStudioZipFile(30天可用(

不要为此使用特殊的启动模式!

MainActivity应该这样称呼ActivityB

Intent intent = new Intent(this. ActivityB.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

ActivityB应该这样称呼MainActivity

Intent intent = new Intent(this. MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

这将允许您在 2 个活动之间来回切换,而无需创建任何新实例。您需要在一个或两个活动中覆盖onBackPressed()

如果您希望MainActivity中的"后退"按钮退出应用程序,则需要有点棘手。执行此操作的简单方法如下:

MainActivity中声明一个静态变量,如下所示:

public static boolean exit = false;

MainActivity.onBackPressed()中,执行以下操作:

exit = true;
super.onBackPressed();

这将导致MainActivity完成。如果MainActivity是唯一的活动Activity,那么您就完成了。但是,ActivityB可能在MainActivity下面。要强制ActivityB在这种情况下完成,请将其添加到ActivityB.onResume()

super.onResume();
if (MainActivity.exit) {
finish();
return;
}
// Rest of onResume() code goes here...

步骤 5 中的行为是什么? 我认为,它将在步骤 5 之后显示活动 B,该活动仍在后台堆栈中,因为它从未被销毁或完成! 如果您不想在主活动的后按上保存任何内容,您可以调用

@Override
public void onBackPressed() {
this.finish();
System.exit(0);
}

或者您也可以尝试在主活动上按下后退时清除后堆栈! 希望这有帮助。

相关内容

  • 没有找到相关文章

最新更新