我的应用程序引发了一个启动活动,如果我的数据库中没有某些凭据,则必须进入登录页面。
Intent intent = new Intent(Splash.this, Login.class);
startActivity(intent);
Log.d("debug", "code is still executing!!!");
问题:在我的startActivity()之后,它仍会运行下面的所有代码。 (“代码仍在执行中”打印在控制台中)。
目标:不要从启动活动执行任何代码,请转到登录活动。
答案 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()。