4

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

任何帮助使这项工作都将不胜感激!

谢谢

4

5 回答 5

11

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

喜欢

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

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

于 2012-04-05T12:51:06.313 回答
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

关闭应用程序并在 Android 上启动主屏幕

于 2012-04-05T12:44:44.843 回答
0

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

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

于 2012-04-05T12:48:22.720 回答
0

使用这行代码:

System.exit(1);

//The integer 1 is just a return code.

如何在android中关闭整个应用程序

于 2012-04-05T12:39:34.593 回答
0

您可以使用-

Process.killProcess(android.os.Process.myPid());
于 2012-04-05T12:39:41.430 回答