Android -- 启动新活动时终止多个先前的活动

3

我知道可以通过以下方式杀死当前活动并启动新活动:

//Presumably called from class A
Intent i = new Intent(A.this, B.class);
startActivity(i);
A.this.finish();

我意识到代码有些过于冗长,但我想要尽可能详尽。如果我们假设这是从某个Activity A中调用的,那么我们知道A将会结束,B将会开始,当你在B中按下返回按钮时,你将被带回到运行在Activity A之前的Activity。

我的问题是,能否再进一步实现?例如,我如何实现以下内容?

//From class A
Intent i = new Intent(A.this, B.class);
startActivity(i);


//from class B
Intent i = new Intent(B.this, C.class);
startActivity(i);
A.this.finish(); //something equivalent
B.this.finish();

非常感谢您提前的任何见解!:-)

2个回答

5
我相信你正在寻找 Intent 标志 FLAG_ACTIVITY_CLEAR_TOP。这将清除所有活动的后退堆栈,直到目标活动类的最后一个实例(如果新活动从未被调用,则清除所有活动)。

这对我正在处理的工作非常完美!只是希望您可以更多地控制要从“历史记录”中删除哪些活动。谢谢! - user131441

0
我不确定这对你是否有帮助(它并没有具体回答你的问题),但通常人们想要做到这一点是因为他们的代码存在循环,导致同一个活动被反复启动多次。您可以将某个活动指定为(基本上)单例,以便无论您启动多少次,它始终都是在启动同一个活动... 只需在您应用程序清单中为该活动添加android:launchMode="singleTask"。 如果这对您没有帮助,我提前道歉:)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接