onActivityResult调用由中间Activity延迟

时间:2012-09-18 15:59:14

标签: android android-activity

我有一个活动A,它启动了活动B:

activityA.startActivityForResult(new Intent(activityA, B.class), REQUESTCODE_B);

在活动B中单击按钮时,将执行一个从A.启动活动C的方法。即

activityA.startActivityForResult(new Intent(activityA, C.class), REQUESTCODE_C);

点击活动C中的按钮,通过调用finish()关闭它,而B保持活动状态。

现在我希望调用activityA的onActivityResult()方法,但它只在activityB完成后调用。我可以想象这是设计的,但有没有办法直接让activityA知道activityC已经完成了?没有活动B或C必须明确知道A?

1 个答案:

答案 0 :(得分:1)

这是非常糟糕的做法。当您启动ActivityC时,您无法确定ActivityA是否未被Android销毁。 Android可以随时破坏后台活动。当您调用ActivityC.finish()时,ActivityA可能不存在。然后,当您调用ActivityB.finish()时,Android会从活动堆栈创建ActivityA,并为完成的活动调用onActivityResult()方法(我不确定以哪种顺序)。告诉我们您无法将ActivityC的结果返回到ActivityB的原因。