在 Android 中启动新的 Activity 并完成当前的 Activity? [复制]

Posted

技术标签:

【中文标题】在 Android 中启动新的 Activity 并完成当前的 Activity? [复制]【英文标题】:Start new Activity and finish current one in Android? [duplicate] 【发布时间】:2012-07-03 17:23:38 【问题描述】:

目前我正在创建一个新的Activity 并在当前的上调用finish

是否有任何标志可以传递给Intent,从而能够完成当前Activity,而无需从代码中手动调用finish

【问题讨论】:

【参考方案1】:

你可以使用finish()方法或者你可以使用:

android:noHistory="true"

然后就不用再打电话给finish()了。

<activity android:name=".ClassName" android:noHistory="true" ... />

【讨论】:

你确定这和你说的一样吗?来自 android 文档:FLAG_ACTIVITY_NO_HISTORY 如果设置,新活动不会保存在历史堆栈中。一旦用户离开它,活动就完成了。这也可以使用 noHistory 属性设置。 android:noHistory="true" 和 finish() 不一样! 只用finish(),不要用noHistory 这是完美的,谢谢!【参考方案2】:

像这样使用finish

Intent i = new Intent(Main_Menu.this, NextActivity.class);
finish();  //Kill the activity from which you will go to next activity 
startActivity(i);

FLAG_ACTIVITY_NO_HISTORY 可以用于您想要完成的活动。例如,您从 A-->B--C 出发。当你从 B-->C 出发时,你想完成活动 B,所以当你从 A-->B 出发时,你可以使用这个标志。当您进行其他活动时,该活动将自动完成。

要了解有关使用 Intent.FLAG_ACTIVITY_NO_HISTORY 的更多信息,请阅读:http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NO_HISTORY

【讨论】:

FLAG_ACTIVITY_NO_HISTORY 则相反。新活动未保存在历史记录中,而我希望完成之前的活动。 finish() 假设杀死当前活动?您希望它如何到达下一行 startActivity(i) ?对我来说看起来很危险且出乎意料 @Michael Calls are async startActivity() 将被调用。 @tomi 你能解释一下这个“调用是异步的 startActivity() 将被调用。”更准确? 你可以参考这个答案***.com/questions/10847526/…【参考方案3】:

FLAG_ACTIVITY_NO_HISTORY 开始您希望在用户转到另一个活动后完成的活动。

http://developer.android.com/reference/android/content/Intent.html#FLAG%5FACTIVITY%5FNO%5FHISTORY

【讨论】:

FLAG_ACTIVITY_NO_HISTORY 则相反。新活动未保存在历史记录中,而我希望完成之前的活动。 是的,我就是这么说的。您希望完成的活动 A,从活动 A 访问的活动 B。使用我提到的标志启动活动 A,因此当用户从活动 A 漫游到活动 B 时,活动 A 完成。正如我在答案中提到的:“......开始你希望完成的活动时......”。与确认的答案相同。

以上是关于在 Android 中启动新的 Activity 并完成当前的 Activity? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

android:Activity启动模式之singleTask

当一个新的activity启动时不会调用以下哪个方法

Android-----Intent中通过startActivity(Intent intent )显式启动新的Activity

android activity 启动模式

android 小部件开始一个新的活动

4) 十分钟学会android--建立第一个APP,启动另一个Activity