Android 在为两个不同的活动连续调用startActivity时,onCreate未为第一个活动调用

Android 在为两个不同的活动连续调用startActivity时,onCreate未为第一个活动调用,android,Android,我有三个活动A、B和C 在一次创建中,我称之为startActivity。。。在启动B&C的两个连续声明中,但android并没有立即调用活动B上的onCreate。 相反,当我按下C键时,因为它位于堆栈顶部。它调用onCreate on B和其他生命周期方法 下面是我的示例代码 public class A extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { sup

我有三个活动A、B和C

在一次创建中,我称之为startActivity。。。在启动B&C的两个连续声明中,但android并没有立即调用活动B上的onCreate。 相反,当我按下C键时,因为它位于堆栈顶部。它调用onCreate on B和其他生命周期方法

下面是我的示例代码

public class A extends Activity {

  @Override 
  protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  startActivity(this, B.class); 
  startActivity(this, C.class);
  }
}

关于为什么对活动B的onCreate的调用被推迟的任何线索?

简单地说,您正在将startActivity命令推到队列中,而B正在等待轮到它。如果您想要A->B->C,请从B的onCreate调用C。

用过于简化的术语来说,您正在将startActivity命令推到队列中,B正在等待轮到它。如果需要A->B->C,请从B的onCreate调用C。

您可以在活动的OnPause中使用finish从堆栈中清除活动,而不是您正在执行的操作。

您可以在活动的OnPause中使用finish从堆栈中清除活动,而不是您正在做的事情。

它会将您的连续调用排入onCreate队列。在按下最后一个创建的活动C后,在这种情况下,将创建活动B,从而在B上调用onCreate。

它将把您的连续调用排入onCreate的队列。在本例中,按下C创建的最后一个活动后,活动B将被创建,在B上调用OnCuto。你为什么要做这样的事情?我需要在栈的中间放置一个虚拟活动,然后我可以通过FravaActuviySuffiTopTople来清除栈。为什么要做这样的事情?我需要在栈的中间放置一个虚拟活动,然后我可以用它来清除栈。通过FLAG_ACTIVITY_CLEAR_TOP。我同意这似乎是最简单的解决方案,除非你想在A中等待b被创建,然后在C上调用startActivity,这听起来并不明智。我最终需要在从C返回时完成b。所以我在b的onCreate中调用finish来纠正它。但是当有人看我的代码时,在onCreate中调用finish看起来很奇怪:我同意这似乎是最简单的解决方案,除非你想在A中等到b被创建,然后在C上调用startActivity,这听起来不明智。我最终需要在从C返回时完成b。所以我在b的onCreate中调用finish来纠正它。但当有人查看我的代码时,在onCreate中调用finish看起来很奇怪:onPause从未在B上调用,因为它不是创建的。只有当我从C中按back时,它才会被创建。所以这并不能解决问题。我想除了代码的外观,我已经正确地实现了它:onPause从未在B上调用,因为它不是创建的。只有当我从C中按back时,它才会被创建。所以这并不能解决问题。我想除了代码的外观,我已经正确地实现了它: