启动新活动后调用finish()

Posted

技术标签:

【中文标题】启动新活动后调用finish()【英文标题】:Calling finish() After Starting a New Activity 【发布时间】:2011-02-12 05:16:45 【问题描述】:

在我的应用程序中加载的第一个 Activity 是一个初始化 Activity,一旦完成,它就会加载一个新的 Activity。我想确保如果用户按下“返回”,他们会直接进入启动器,而不是初始化屏幕。 旁注,这甚至是最好的方法,还是用某种 Intent Flag 做得更好?

在新activity上调用startActivity()后调用finish()是否正确?

onCreate() 
...
startActivity(new Intent(this, NextActivity.class));
finish();
...

我仍在使用 android 中的整个“消息队列”方法,我的假设是调用 startActivity() 然后 finish()从我的第一个 Activity 开始,onCreate() 将在消息队列中记录每个相应的消息,但在继续开始下一个 Activity 并完成我的第一个 Activity 之前完成 onCreate() 的执行一。这是正确的理解吗?

【问题讨论】:

【参考方案1】:

也许您应该在 manifest.xml 中的活动上使用 noHistory 标志

【讨论】:

谢谢!这正是我想做的事情。但是,我仍然有兴趣了解我之前描述的方法中是否存在固有的错误或错误形式,以及我对队列中消息处理方式的理解是否正确。 你的代码(开始和结束)是绝对正确的,并且是一种经常使用的技术。 @hackbod:您能指出文档吗?以防万一有人需要它(比如我)...... 如果 Activity A 的 nohistory=true 并且首先发送到后台(即用户按下 Home 按钮)然后返回前台 - 尽管noHistory=true? 我的个人经验是 noHistory 很少是正确的解决方案。一种(通常)出乎意料的行为是,如果您的用户在进行 noHistory 活动时接到来电,它将消失。

以上是关于启动新活动后调用finish()的主要内容,如果未能解决你的问题,请参考以下文章

调用 finish() 不会清除对 Activity 的内存引用

android finish() 方法不会从内存中清除应用程序

Android,通过Handler.post函数调用finish()

socket回调中无法finish Activity的情况?

Android 小知识:startActivity 与 finish 的调用顺序

Android 小知识:startActivity 与 finish 的调用顺序