启动新活动后调用finish()

27
我的应用程序中加载的第一个Activity是一个初始化活动,完成后它会加载一个新的Activity。我希望确保如果用户按下“返回”键,他们会直接回到启动器,而不是初始化屏幕。顺便说一句,这是否是最佳方法?还是使用某种Intent标志更好? 在调用新Activity的startActivity()方法之后,调用finish()方法是否正确?
onCreate() {
...
startActivity(new Intent(this, NextActivity.class));
finish();
...
}

我还在学习在Android中使用“消息队列”方法处理事务,我的假设是从我的第一个Activity的 onCreate() 方法调用 startActivity() 然后调用 finish(),会将每个消息记录在消息队列中,但会在继续启动下一个Activity和完成第一个Activity之前结束执行onCreate()方法。这个理解正确吗?

1个回答

29

你可能只需要在manifest.xml文件中的活动(activity)上使用noHistory标志。


谢谢!这正是我想要做的。然而,我仍然很感兴趣听听我的先前描述的方法是否存在任何固有的错误或不良形式,并且我的消息队列处理理解是否正确。 - stormin986
12
你的代码(开始到结束)完全正确,而且这是一种经常使用的技巧。 - hackbod
2
@hackbod:您能指出文档吗?以防万一有人需要(比如我)... - user942821
1
如果Activity A的noHistory=true,并且首先被发送到后台(即用户按下Home按钮),然后再次回到前台,那么Activity A的状态是否会被保留,尽管noHistory=true? - AgentKnopf
小心使用noHistory。新任务不会自动完成活动,onPause()被调用但不是onStop和onDestroy。 - Cookster
6
我个人的经验是,noHistory 很少是正确的解决方案。一个(通常)意想不到的行为是,如果你的用户在 noHistory 活动中接收到来电,该活动将会消失。 - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接