在CLEAR_TOP之后获取活动结果

时间:2014-07-07 08:21:13

标签: java android listview android-intent

我的问题与this question非常相似。我有活动(A)开始活动(B),可以启动另一个活动实例(B),可以启动任意数量的连续实例。 (用户可以在一种树上来回导航)。

我希望用户能够在清除所有活动实例(B)的同时按下一个将他带到活动(A)的按钮,但仍然返回第一个活动实例的结果(B)< /强>

添加Intent intent = new Intent(InstanceOfActivityB.this,ActivityA.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);给了我正确的行为,但是活动(A)没有从第一个活动实例(B)收到结果。

我还尝试使用FLAG_ACTIVITY_FORWARD_RESULT将(B)的第一个实例的结果传递给最后一个。然而,用户通过点击当前实例的列表视图中的项目,然后通过按返回键返回,在(B)活动的实例行中向前导航。因此,从自定义数组适配器启动一个新的活动实例(B)。也许这就是我的结果没有被推进的原因。

我知道这是一个非常具体的问题,但任何帮助将不胜感激。


编辑:我只是尝试使用共享首选项来保存结果,意识到在使用FLAG_ACTIVITY_CLEAR_TOP调用活动时,活动(A)会重置。也许我应该在另一个任务中启动活动(B)并在用户想要返回活动时杀死整个任务(A)。

1 个答案:

答案 0 :(得分:0)

如果您的活动B可以启动自己的实例,那么我建议您使用launchMode作为singleTop。由于B位于顶部且您再次启动B,因此它不会创建新实例,而是会为您提供相同的实例,您可以在onNewIntent()处理代码。

A - > B - > New Instance of B created.

A - > B - > B - > onNewIntent() called, new instance NOT created.

根据文档:

If an instance of the activity already exists at the top of the target task, the system routes the intent to that instance through a call to its onNewIntent() method, rather than creating a new instance of the activity.