【问题标题】:How to remove all activity in Stack when press back button按下后退按钮时如何删除堆栈中的所有活动
【发布时间】:2014-05-14 03:33:31
【问题描述】:

我有一个活动列表 A - B -C -D - E 等等,例如最终活动是 K。当我按下 BACK 按钮时,我想清除堆栈中的所有这些活动。我能怎么做 ?事实上,我超车了

onBackPress(){ 
    moveTaskToBack(true);
    finish();
}

但只有当前活动被删除并且应用程序退出。然后,我返回应用程序,它在 K 之前恢复活动。我希望它在我重新打开应用程序时从头开始。我认为这里的原因是因为堆栈中的活动列表仍然被存储,所以我想在单击 BACK 按钮时清除所有堆栈。有什么建议 ?非常感谢 !

【问题讨论】:

    标签: android android-studio android-intent android-activity onbackpressed


    【解决方案1】:

    有一个方法叫做finishAffinity()来完成所有的活动。

    public void onBackPressed(){
      super.onBackPressed();
      this.finishAffinity();}
    

    【讨论】:

      【解决方案2】:

      您需要使用onBackPressed 中的FLAG_ACTIVITY_CLEAR_TOP 调用您的活动

      @Override
      public void onBackPressed()
      {
          Intent it = new Intent(YouCurrentActivity.this, YourFinalActivity.class);
          it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
          startActivity(it);
          finish();
      }
      

      希望对你有帮助!

      【讨论】:

        【解决方案3】:

        要么在清单中使用noHistory 标志,要么在用户离开时自己完成每个活动。

        startActivity(myIntent);
        finish();
        

        另一种解决方案,也许是最好的,如果你有这么多覆盖Activities:只使用一个Activity 并处理Fragments 中的内容。这样您就可以控制用户点击后退按钮时想要显示的内容。

        【讨论】:

          【解决方案4】:

          API 级别 11 或更高级别中,在 Intent 上使用 FLAG_ACTIVITY_CLEAR_TASKFLAG_ACTIVITY_NEW_TASK 标志来清除所有活动堆栈。 将此代码添加到您的 onBackPressed() 方法中,

          > This launch mode can also be used to
          

          配合效果好 FLAG_ACTIVITY_NEW_TASK:如果用于 启动任务的根活动,它 将带来任何当前正在运行的 该任务的实例 前景,然后将其清除到其 根状态。这个特别好用 例如,当启动一个 通知中的活动 经理。

          因此,您启动 B 的代码将是:

          Intent intent = new Intent(A.this, B.class);
          intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
          startActivity(intent);
          finish(); // call this to finish the current activity
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-02-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-14
            • 2020-05-24
            • 1970-01-01
            • 2013-08-08
            相关资源
            最近更新 更多