【问题标题】:How to finish every activity on the stack except the first in Android如何完成堆栈上的每个活动,除了 Android 中的第一个活动
【发布时间】:2011-09-12 00:00:10
【问题描述】:

我正在将一个 iPhone 应用程序移植到 Android,但我似乎找不到一种方法来弹出堆栈中的每个活动,除了根活动。

在objective-c中我会做类似下面的事情

[navController popToRootViewControllerAnimated:YES];

有人知道我是否可以在某些操作后有效地对每个活动调用“finish()”吗?

【问题讨论】:

  • 我不能 100% 确定您在问什么,但是一旦您完成了它,在 Activity 上拨打 finish() 绝对是安全的。这将使您回到堆栈中之前的任何活动。
  • finish() 只会从导航堆栈中弹出一层

标签: android activity-finish


【解决方案1】:

如果您想启动一个 Activity,例如您的主屏幕,并删除应用程序堆栈中的所有其他 Activity,您可以使用:

Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // Removes other Activities from stack
startActivity(intent);

如果您还想在 MainActivity 中提供此事件(例如标题栏中的徽标单击),您也可以添加 FLAG_ACTIVITY_SINGLE_TOP 标志以确保它不会将另一个自身实例添加到堆栈中.

【讨论】:

  • 它重新创建了第一个活动,我的意思是它调用onCreate() of MainActivity
【解决方案2】:

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP:你可以用这个标志在根活动上启动活动,它会吹走它上面的所有活动。您应该仔细阅读有关意图传递行为的文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 2012-04-20
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    相关资源
    最近更新 更多