按下返回按钮时完成所有活动

4
我有一个安卓应用程序有3个活动。对于第一和第二个活动,我希望返回键退出所有现有的活动。
目前,返回按钮会退出它所在的活动,但如果按下第二个活动上的返回键,则会显示第一个活动,而不是退出应用程序,因为第一个活动引导到第二个活动。
我需要此功能的原因是,第一和第二个活动使用计时器,当按下HOME按钮时计时器仍在运行,我希望保留这个状态。但我需要通过返回键的方式来重置计时器并完全退出应用程序。
以下是我在第一和第二个活动中同时存在的返回按钮代码。
@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按钮按下后显示确认消息并选择"Yes"时结束所有应用程序(请参见第一个代码片段)。

如果能帮忙让这个工作起来,将不胜感激!

谢谢。

5个回答

11

@Rob 当你使用意图从活动1导航到2,再从2导航到3时,请使用 finish 函数。

例如:

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

这会导致当前活动被销毁,当您进入下一个活动后,按下返回按钮将会使您退出应用程序,因为栈中不存在任何活动。


谢谢您的回复。我很喜欢这个想法,但是ABC是当前活动吗?Main_menu是什么?我得到了“main_menu无法解析为类型”的错误提示? - Rob
抱歉,main_menu是我的应用程序中的一个活动,abc是所谓的活动,就像从第一个活动移动到第二个活动一样,在这里Main_Menu是当前的活动。 - Avi Kumar
好的,谢谢!我已经解决了。这对我的应用程序更有效,但下面的答案也是可行的解决方案,感谢大家。 - Rob

7

1
唯一有效的解决方案。谢谢。 - zackygaurav

0

你可以使用-

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

0

0
不要调用任何 System.exit 或其他类似的方法! Android 架构是建立在自我管理进程的基础上。Android 本身决定何时终止应用程序进程。当您手动结束应用程序时,会为用户设备创建额外的开销。 请尝试手动重置计时器并修订应用程序架构。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接