【问题标题】:Remove all activities of an app from every existing task in Activity Back Stack从 Activity Back Stack 中的每个现有任务中删除应用程序的所有 Activity
【发布时间】:2018-04-07 03:37:46
【问题描述】:

有没有办法在前台(我的应用程序)中删除属于应用程序的所有活动?

活动可能出现在不同的任务中。此外,在删除所有活动后,我的应用应返回主屏幕,这是我的应用的启动器活动。

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

【问题讨论】:

  • 你想完成所有活动并进入主要活动
  • 是的,乔蒂。但是清除任务标志不起作用。
  • 使用Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK
  • 您有什么用例需要您重新审视这些活动吗?还是所有活动只使用一次?
  • 我有 3 个活动 A、B、C。A 是启动器,处于标准启动模式。 A 通过意图开始 B。 B 反过来通过意图启动 C。 C 再次通过意图启动 B。 (B-C) 或 (C-B) 可以交替任意次数。请注意,B 和 C 一直保持在 singleTask 启动模式。现在,当在 B 中时,我想通过完成现有的两个活动(即 A 和 B)去 A。我不知道它们是否在同一个任务中。当我到达 A 时,我的应用程序应该像刚刚启动一样运行。即,删除所有数据和所有内容。

标签: android android-activity task


【解决方案1】:

你需要这样调用你的活动。

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();

【讨论】:

    【解决方案2】:

    你可能需要

    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

    与当前活动相关联的任何现有任务将在所需活动开始之前被清除。只需old activities are finished.

    FLAG_ACTIVITY_NEW_TASK

    如果设置,此活动将在此历史堆栈上become the start of a new task

    了解更多详情,Intent Flags

    【讨论】:

    • 但是另一个任务中的旧活动没有被破坏,这导致了问题
    • 你为什么不试试单任务呢? android:launchMode="singleTask" 用于所有活动
    【解决方案3】:
        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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 2017-07-12
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 2014-11-15
      相关资源
      最近更新 更多