【问题标题】:How to exit from Android App even if current Activity is not Main Activity即使当前 Activity 不是 Main Activity 如何退出 Android App
【发布时间】:2016-08-14 02:19:09
【问题描述】:

我有这个活动流程

HomeActivity > Activity1 > Activity2 > Activity3 > HomeActivity

我通过按 Activity3 上的取消按钮直接从 Activity3 切换回 HomeActivity。

但是当我按下 HomeActivity 上的返回按钮时,我想退出应用程序,但是它带我回到 Activity3...如何退出应用程序???这是我的代码 关于家庭活动:

@Override
    public void onBackPressed() {
            finish();
            System.exit(1);
        }  

如果我在 HomeActivity 上刚刚启动 App 时按下返回按钮,它会正常工作,关闭应用程序...

当我浏览所有这些其他活动时,如何让它发挥作用?

【问题讨论】:

    标签: android android-activity exit


    【解决方案1】:

    首先请注意,在浏览 Activity 时会创建一个 Activity 堆栈,这就是为什么只需调用 finish() 就可以完成 HomeActivity,然后 android 会获取堆栈上的前一个 Activity,即 Activity 3 并放入它在屏幕上。

    我会这样做:

    1) 从 Activity3 调用您的 HomeActivity,如下所示:

    Intent intent = new Intent(this, HomeActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.putExtra("Exit", true);
    startActivity(intent);
    finish();
    

    这将调用您的 HomeActivity 并从堆栈中清除所有活动

    2) 在 HomeActivity OnCreate() 添加:

    if( getIntent().getBooleanExtra("Exit", false)){
        finish();
    }
    

    希望这有帮助!如果代码不起作用或我误解了问题,请不要怀疑评论。

    【讨论】:

      【解决方案2】:

      你应该这样从 Activity3 切换到 HomeActivity:

      Intent launchNextActivity = new Intent(Activity3.this, HomeActivity.class);
      launchNextActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      launchNextActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);                  
      launchNextActivity.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
      startActivity(launchNextActivity);
      

      那么onBackPressed() 应该可以正常工作。

      【讨论】:

        【解决方案3】:

        尝试调用 完成亲和力();在HomeAactivity 的 onBackPressed() 中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多