Android startActivity()调用是否堆叠?

Android startActivity()调用是否堆叠?,android,start-activity,Android,Start Activity,我最近开始使用android。所以我正处于学习的初级阶段 问题是:当我们在另一个活动的执行过程中调用开始激活(意图)时,我实际上认为StestActuvio()会跳进被调用的活动。不是吗?它是否只是堆叠对活动的调用? 我有一个疑问,实际上我有一个活动a有一个循环的程序。一些在循环活动中间的B被调用。我希望活动A仅在活动B完成时才恢复循环。我在a的循环中打了一个电话,如下所示: in = new Intent(this,MyChoiceActivity.class); in.putExtra("M

我最近开始使用android。所以我正处于学习的初级阶段

问题是:当我们在另一个活动的执行过程中调用开始激活(意图)时,我实际上认为StestActuvio()会跳进被调用的活动。不是吗?它是否只是堆叠对活动的调用? 我有一个疑问,实际上我有一个活动a有一个循环的程序。一些在循环活动中间的B被调用。我希望活动A仅在活动B完成时才恢复循环。我在a的循环中打了一个电话,如下所示:

in = new Intent(this,MyChoiceActivity.class);
in.putExtra("McObj", mc);
startActivity(in);
finish();

所以发生的是活动A调用B,但B没有输入,A简单地恢复循环,然后再次调用B,简单地对B的调用被叠加,一旦A中的循环完成,对堆栈中B的一个接一个调用被执行,所以最后对B的第一个调用被最后执行(后进先出)…但是我不想改变顺序…如果A调用B,它应该简单地执行B,然后才进入循环。我应该怎么做才能完成这个任务?

您的活动可能很忙,只是“在那里”。如果你在你的活动确实在做某件事的时候开始了一项新的活动,那么它不会“等待”另一项活动完成:这两项活动可以同时进行。 如果它能做到这一点,你会有很多繁忙的等待过程,所以幸运的是,这不是发生的事情

请参阅,以了解有关活动的更多信息(它不仅仅是您现在使用的另一个类,它还启动了一个挂在当前活动旁边(而不是挂在当前活动之上)的单独对象)


相反,因为这些事情是异步的,所以您可能需要使用不同的方法:使用一个
ActivityForResult
,并在得到结果时启动一个新的方法。

阅读此文。。您将了解有关活动生命周期的内容。添加到前面的注释中,finish();当您要转到下一个活动并销毁当前活动时使用。如果您转到活动B并调用活动A的“完成”,则不能通过按“上一步”按钮从活动B返回到活动A。@Sharj..我知道..我实际上是在尝试将问题从活动A传递到活动B..这实际上是在循环中完成的..每次迭代都会将问题传递到下一个活动..这里的mc对象,包含一个问题…最初我没有使用finish实现它..即使发生了同样的事情..对B的调用是堆叠的..我应该如何避免调用堆叠?你知道吗?你不能像那样在UI线程上有一个循环,并且遵守android API的要求,即你可以从所有UI线程事件方法中立即返回。相反,将您的程序组织为一个状态机,即“下一次我收到一个带有的事件时,我将做什么使它适合做某事”,如果您需要生成额外的事件以在各个状态中运行,您可以使用计时器和RunnuIthread()。@Chris..我会记住..谢谢..所以如果我使用startActivityForResult()我可以避免对B的呼叫堆积吗?不,你不能在Android的ui线程上“忙着等待”。@ChrisStratton你是对的,我想说的是(但做得不是很好),如果它能像OP预期的那样工作,情况就是这样。我想说的一点是,你不明白,这就是为什么它的工作方式不同:)。。让我看看是否可以修复它。@user2784307如果您使用activityforresult,则启动该活动,然后停止操作。但是,如果活动完成,您的回调将被调用,您可以对结果进行处理(甚至重新启动相同的活动)。