【问题标题】:Finish all activities when back button is pressed按下后退按钮时完成所有活动
【发布时间】:2012-04-05 12:33:02
【问题描述】:

我有一个有 3 个活动的 android 应用程序。对于第一个和第二个活动,我希望后退按钮退出所有现有活动。

当后退按钮退出启动它的活动时,如果在第二个活动上按下它,将显示第一个活动,而不是在第一个活动导致第二个活动时退出应用程序。

我需要这个功能的原因是因为第一个和第二个活动使用计时器计时器,当按下我想要的 HOME 按钮时它会继续运行。但我需要一种方法来重置计时器以使用 BACK 按钮完全退出应用程序。

这是我的后退按钮代码,它出现在第一个和第二个活动中。

@Override
 public void onBackPressed() { // method for exit confirmation
  AlertDialog.Builder builder = new AlertDialog.Builder(BreakActivity.this);
  builder.setMessage("Are you sure you want to exit?")
         .setCancelable(false)
         .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int id) {
                  BreakActivity.this.finish();
             }
         })
         .setNegativeButton("No", new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int id) {
                  dialog.cancel();
             }
         });
  AlertDialog alert = builder.create();
  alert.show();

        }         
  };  

我研究过使用以下代码的可能性:

intent = new Intent(this, FinActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent)
finish();

但是,我不确定应该在哪里实现,如果在按下 BACK 按钮后显示确认消息后选择“是”,我真的只想结束所有应用程序(参见第一个代码 sn-p )。

我们将不胜感激任何帮助完成这项工作!

谢谢

【问题讨论】:

    标签: javascript android android-activity


    【解决方案1】:

    @Rob 当您有意从活动 1 导航到 2 和 2 到 3 时 使用完成功能

    喜欢

     i=new Intent(Main_Menu.this, ABC.class);
              finish();
             startActivity(i);
    

    它会杀死你将要进入下一个活动的活动 然后当您按下后退按钮时,它会将您带到应用程序之外, 因为堆栈中不会有活动

    【讨论】:

    • 您好,感谢您的回复。我喜欢这个声音,但 ABC 是当前的活动吗? Main_menu 是什么?我得到 main_menu 无法解析为类型?
    • 对不起 main_menu 是我的应用程序中的一个活动,而 abc 是被调用的活动,就像从第一个活动移动到第二个活动一样,这里 Main_Menu 是当前活动
    • 好的,谢谢,我搞定了!这对我的应用程序更有效,但下面的答案也是一个可行的解决方案,谢谢大家
    【解决方案2】:

    你可以用这个

            finish();
            Intent intent = new Intent(Intent.ACTION_MAIN); 
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
            intent.addCategory(Intent.CATEGORY_HOME); 
            startActivity(intent);
    

    注意一件事总是避免 system.exit 从应用程序中退出它不推荐并且可能导致各种问题

    https://groups.google.com/forum/?fromgroups#!topic/android-developers/Y96KnN_6RqM

    Close application and launch home screen on Android

    【讨论】:

    • 唯一有效的解决方案。谢谢
    【解决方案3】:

    使用这行代码:

    System.exit(1);
    
    //The integer 1 is just a return code.
    

    how to close whole application in android

    【讨论】:

      【解决方案4】:

      不要调用任何 System.exit 或其他东西! Android 架构是为自我管理进程而构建的。 Android 本身决定何时终止应用程序进程。当您手动终止您的应用程序时,您会为用户设备创建额外的开销。

      尝试手动重置您的计时器并修改您的应用架构。

      【讨论】:

        【解决方案5】:

        你可以使用-

        Process.killProcess(android.os.Process.myPid());
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多