我有一个场景,我有我的主屏幕(ActivityA)开始登录屏幕(ActivityB)。此登录屏幕将有一个按钮,允许非注册用户注册一个帐户,触发(ActivityC)。Android startActivityForResult和子活动启动另一个活动
在我的代码,我有ActivityA
public class ActivityA extends Activity {
...
startActivityForResult(new Intent(this, ActivityB.class), 0);
...
}
和ActivityB
public class ActivityB extends Activity {
...
startActivity(new Intent(this, ActivityC.class));
...
}
那么它似乎工作,但我担心,如果有任何隐藏的问题都不可能返回后来困扰我?在ActivityB中,如果我启动ActivityC,则没有setResult()调用来触发ActivityA的onActivityResult()。这样的流程是否有问题,或者我应该使用startActivity而不是startActivityForResult?
感谢你的回复,关于你回复的一些问题1)如果ActivityB没有甚至打电话完成()? 2)如果ActivityC进入startActivty()并启动ActivityA,会有什么问题吗? – yjw 2011-06-06 19:33:27
ActivityB在返回到ActivityA之前始终会调用finish(),它在生命周期中。如果ActivityC启动ActivityA,则取决于您如何启动它。它应该创建一个新的实例,以便您的堆栈看起来像“A B C A”,在这种情况下,从B到A的结果通道仍然可以正常工作。有可能启动带有标志的A将它带到栈顶,导致“B C A”,这种情况下B的结果可能未被使用。 – LeffelMania 2011-06-06 19:44:18