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

Tom*_*mCB 10 android android-activity

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

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

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

目标:不要执行任何来自splash活动的代码,转到登录活动.

Mar*_*ski 11

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

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

来自文档的片段:

void finish()

在您的活动完成后调用此选项并应关闭.ActivityResult会传播回通过onActivityResult()启动您的人.

  • 我重构了我的代码,所以我不再需要调用完成,非常感谢指出startActivity并不意味着其余的代码不会被执行! (2认同)