如何重新打开一个非常相同的活动/如何使活动保持活力?

时间:2015-05-19 15:35:14

标签: android android-intent android-fragments android-activity

我有一项主要活动,并在那里开始一项新活动

Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);

要回到主要活动,我使用了finish()方法。

我的问题是:如何在不启动新活动的情况下切换到相同的第二个活动?我thougt finish()方法杀死了第二个Activity,但它仍然有效,代码告诉他(计时器倒计时和声音出现)在后台。那么可以切换回屏幕上的第二个活动吗?

过去我曾经使用过TabWidget,它也适用于活动,所以它必须以某种方式可行!或者我必须使用碎片?但是,如果我使用Fragments,我会遇到同样的问题:如何让片段保持活着直到我必须再次使用它?

我希望你能帮助我,这会很棒。 我会非常感激。

2 个答案:

答案 0 :(得分:0)

如果您的活动还活着,您可以通过以下代码恢复活动:

    Intent openMainActivity= new Intent(SomeActivity.this, Main.class));
    openMainActivity.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    startActivity(openMainActivity);

或者您可以使用此标志清除其他活动:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

答案 1 :(得分:0)

启动Intent.FLAG_ACTIVITY_REORDER_TO_FRONT时需要使用SecondActivity.class

它基本上会告诉Android在backstack中搜索SecondActivity的实例。如果找到这样的实例,它会将其移动到堆栈的顶部。

另请注意,如果您在SecondActivity上调用finish(),则REORDER_TO_FRONT标志几乎不会做任何事情,因为您从未拥有该活动的实时实例。