按下后退按钮后完成所有活动

时间:2012-04-05 12:33:03

标签: javascript android android-activity

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

当后退按钮退出活动时,它会启动,但如果按下第二个活动,则会显示第一个活动,而不是退出应用程序,因为第一个活动将指向第二个活动。

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

以下是我在第1和第2活动中出现的后退按钮的代码。

@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按钮后显示确认消息后选择“是”,我真的只想结束所有应用程序(请参阅第一个代码段)。

非常感谢任何有助于此工作的帮助!

谢谢

5 个答案:

答案 0 :(得分:11)

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

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

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

答案 1 :(得分:7)

你可以用这个

        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

答案 2 :(得分:0)

使用以下代码行:

System.exit(1);

//The integer 1 is just a return code.

how to close whole application in android

答案 3 :(得分:0)

您可以使用 -

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

答案 4 :(得分:0)

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

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