如何同时"破坏"多个Android活动

Bal*_*yto 5 android android-lifecycle android-activity

我在应用程序中有一些通过6个活动的向导.

所以我打电话给:

主要活动 - 呼叫选项1 - 呼叫选项2 - 呼叫选项3 - 呼叫选项4 - 呼叫选项5

现在,在选项5上,我将整个操作保存到数据库,此时我需要返回主活动并销毁Option1,2,3,4和5.

在选项5保存到数据库之前,我需要能够返回,进行更改,转到选项5并保存.

是这样做的正确方法我以某种方式创建了具有以下方法的方法:

private void cleanStack(){
   Option1.finish();
   Option2.finish();
   Option3.finish();
   Option4.finish();
   Option5.finish();
}
Run Code Online (Sandbox Code Playgroud)

然后开始(或恢复)主要活动?

TNX

Lee*_*elo 7

使用以下命令清除堆栈:

Intent intent = new Intent ( this , MainActivity.class );
intent.addFlags ( Intent.FLAG_ACTIVITY_CLEAR_TOP );
startActivity ( intent );
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以在堆栈中拥有:主要活动 - >呼叫选项1 - >呼叫选项2 - >呼叫选项3 - >呼叫选项4 - >呼叫选项5

如果使用clear top标志启动MainActivity,则MainActivity顶部的堆栈中的所有活动都将完成.


Mat*_*vis 3

我要做的是,创建一个意图来回调您的 MainActivity,而不是完成所有活动。

使用该setFlags方法为该 Intent 提供FLAG_ACTIVITY_CLEAR_TOP.

这将检查您的堆栈以查看 MainActivity 的实例是否已存在,如果存在,则会将该 Activity 置于最前面并清除其上方的所有 Activity,而不是重新启动 MainActivity 并将其放在堆栈顶部。

如果 MainActivity 需要选项 1-5 中的信息,您可能需要刷新数据,因为 CLEAR_TOP 在大多数情况下会将 MainActivity 的旧实例置于焦点中,而不是完全重新创建它(不会onCreate被调用,但onStart会被onResume调用)。

这是有关 Intent 类的文档。如果您遇到困难,还有其他标志可以帮助您进行导航。祝你好运!