我怎么能杀死一个活动 - Android

时间:2014-04-05 21:46:03

标签: android android-activity

我使用startActivity(Intent)在我的Android应用程序中创建一个新活动。

是否有可能杀死其中一项活动,如果是,如何?

我真正想要做的是,假设我有4个活动在同一时间运行,按此顺序打开

活动1 - >活动2 - >活动3 - > Activity4

当用户按下后退按钮时,而不是

活动4 - >活动3 - >活动2 - >活动1 - >关闭申请

我想要这样

活动4 - >活动1 - >关闭申请

3 个答案:

答案 0 :(得分:1)

是的,你可以这样做。

将此标记添加到清单中的Activity3和Activity2:

android:noHistory="true"

这样,这些活动就不会添加到backStack中,因此按下Activity4上的后退按钮会使用户转到Activity1。 (在活动3和2中也会发生同样的情况。)

答案 1 :(得分:1)

当您启动序列中的下一个活动时,可以使用finish()方法关闭活动2和3。这将使您从4到1,但也从3到1。

答案 2 :(得分:1)

第一个Activity1应该在singleTop的清单中设置一个特殊的launchMode。这将确保如果它已经位于堆栈顶部,则不会创建另一个版本的Activity1。

对于您想要特殊后退按钮行为的每个活动,您应该覆盖onBackPressed()。在onBackPressed里面实现以下代码:

    public void onBackPressed () {
            Intent goBackTo1 = new Intent(this, Activity1.class);
            goBackTo1.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(goBackTo1);
    }

上面的代码将启动Activity1,但在此之前它将清除历史堆栈中Activity1之后的所有活动。发生这种情况时,Activity1将在方法onNewIntent(Intent intent)中将新意图传递给已经运行的Activity1。

EX:

    Activity1->Activity2->Activity3->Activity4

如果他们实现上面的代码,则从2,3或4调用onBackPressed时会成为这个。您可能希望将基本活动类视为不重复代码。

    Activity1