仅完成某些活动并发送数据

Finishing only certain activities and sending data

我只想完成某些活动(3. 和 4.)并将数据发送给 2.activity。我该怎么做?

有两种方法可以做到这一点。

  1. 在清单或意图标志中为 activity 3 设置 noHistory="true" 发射。在这种情况下,当您从 4 app会直接去2,因为3不在back stack中

  2. 使用 android 启动模式。您可以将 Activity 1,2 和 4 放在一个堆栈上,然后 activity 3 个在不同的堆栈上。

浏览此页面以了解启动模式。

https://developer.android.com/guide/components/activities/tasks-and-back-stack

您有 2 个选择:

1.使用 startActivityForResult()

在这种情况下,Activity2 应该使用 startActivityForResult() 启动 Activity3。在对 onActivityResult().

的调用中,结果将 returned 为 Activity2

Activity3 启动 Activity4 时,它应该使用 startActivity() 并且应该在 Intent 中设置 Intent.FLAG_ACTIVITY_FORWARD_RESULT 并调用 finish()

Activity4准备好return数据时,它应该用数据调用setResult(),然后finish()。这会将 return 结果变为 Activity2.

2。使用 FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP

在这种情况下,Activity2 应该使用 startActivity() 启动 Activity3

Activity3 应使用 startActivity().

启动 Activity4

Activity4 准备好 return 数据时,它应该创建一个包含数据的 Intent(作为“额外”),然后执行以下操作:

Intent intent = new Intent(this, Activity2.class);
intent.addFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP |
               Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
finish();

这将导致 Activity3Activity4 从任务堆栈中删除 onNewIntent() 将在 Activity2 的现有实例上调用。 Activity2 应该覆盖 onNewIntent() 并且可以从传递给 onNewIntent().

的参数中的“extras”中检索 returned 数据