我的问题与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)。
答案 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.