代码仍然在startActivity()之后运行

时间:2014-08-08 17:58:19

标签: android android-activity

我的应用程序引发了一个启动活动,如果我的数据库中没有某些凭据,则必须进入登录页面。

Intent intent = new Intent(Splash.this, Login.class);
startActivity(intent);
Log.d("debug", "code is still executing!!!");

问题:在我的startActivity()之后,它仍会运行下面的所有代码。 (“代码仍在执行中”打印在控制台中)。

目标:不要从启动活动执行任何代码,请转到登录活动。

3 个答案:

答案 0 :(得分:10)

这是正常行为。 startActivity()不会终止当前的一个,也不会立即中止/退出调用它的代码。它为处理程序的队列添加了一个新的意图以供进一步处理,但是这个意图不会被框架处理,除非将控制权返回给系统事件循环,这通常意味着除非你的方法结束执行。 / p>

如果你想终止当前的活动(通常唯一的原因是禁止BACK按钮返回它 - 如果你不需要它,那么不要这样做)在你的电话中调用finish()告诉你用这个完成的框架的方法。请注意,finish()不会立即终止当前活动,因此如果您在finish()之后获得代码,则会执行该代码。如果这不是你的意图,请使用ie return;将控制权交还给框架。

来自documentation的片段:

  

void finish()

     

在您的活动完成后调用此应该是   关闭。 ActivityResult会传播回给你的人   通过onActivityResult()。

答案 1 :(得分:2)

这是正常行为。 startActivity()只是一个'请求'它不会启动一个新活动,当前的一个将继续执行其余的代码,直到它'死'然后是onPause()后跟onDestroy()被执行。您可以在此处阅读关于活动生命周期的更多信息:http://developer.android.com/training/basics/activity-lifecycle/starting.html

答案 2 :(得分:0)

Android中的正常行为。 startActivity()方法不会终止您所在的当前活动。如果您希望代码不再执行,请添加return,如果您想取消活动,请添加finish()。