从 Activity 回退栈中彻底移除应用程序的所有活动任务

3

有没有一种方法可以删除属于前台应用程序(我的应用程序)的所有活动?

这些活动可能存在于不同的任务中。此外,在删除所有活动后,我的应用程序应返回到主屏幕,即我的应用程序的启动器活动。

任何形式的帮助都将不胜感激。


你想要完成所有活动并返回主活动吗? - Jyoti JK
使用 Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK - Jyoti JK
你有任何需要重新访问那些活动的用例吗?还是所有的活动只使用一次? - Sagar
我有三个活动A、B、C。A是启动器,处于标准启动模式。A通过意图启动B。B再通过意图启动C。C再通过意图启动B。 (B-C)或(C-B)可以交替任意次数。请注意,B和C已经保持在singleTask启动模式。现在当我在B中想要通过结束现有的活动A和B来回到A时,我不知道它们是否在同一个任务中。当我到达A时,我的应用程序应该表现得像刚刚启动一样,即删除所有数据和内容。 - MONU KUMAR
问题是我能够按预期到达A,但当我想再次回到A时,它会去到B,然后突然崩溃并返回A。当我再试一次时,它就正常工作了。 - MONU KUMAR
显示剩余2条评论
3个回答

1
你需要这样调用你的活动:

You need to call your activity like this.

Intent login=new Intent(MainActivity.this,HomeActivity.class);
login.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
login.putExtra("flag",false);
startActivity(login);
finish();

0

你可能需要

Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

FLAG_ACTIVITY_CLEAR_TASK

在启动所需的活动之前,将清除与当前活动相关联的任何现有任务。简单来说,旧活动将被结束。

FLAG_ACTIVITY_NEW_TASK

如果设置了此标志,则此活动将成为此历史堆栈上的新任务的开始

更多详情请参见Intent Flags


但是另一个任务中的旧活动并没有被销毁,这就导致了问题。 - MONU KUMAR
1
为什么不尝试使用单任务?对于所有活动,android:launchMode="singleTask" - Jyoti JK

0
    Intent i = new Intent(OldActivity.this, NewActivity.class);
    // set the new task and clear flags
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(i);
finish();

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