以正确的方式退出申请

时间:2013-12-04 13:43:32

标签: android exit back-button

我有四个活动,我有两个按钮可以在那些被命名为上一个和下一个活动的活动之间进行导航。

现在我已经完成了许多以前回答的SO答案,并在按下后退按钮时得到以下代码退出应用程序

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();
    finish();
}

现在我的问题是当我从那里导航到第二个活动到第三个并最终到第四个活动时假设如果用户想要导航到之前的活动,他可以单击上一个按钮并类似地返回按钮。但是如果我导航到显示的流程下面:

2 -----→3 ----→4

4 -----→3 ----→4

或类似的组合,最后当我到达最后一个活动并且用户完成他的任务并决定退出应用程序并点击后退按钮时,它只是转到之前的活动

如上所示,从4 ----> 3和3 ---> 4

这是后退按钮的行为方式,或者任何人都可以说我在点击后退按钮时关闭应用程序的权利。

4 个答案:

答案 0 :(得分:1)

当Backstack上没有更多活动时,应用程序将关闭。每次完成()一项活动,您实际上都是自己从后台堆栈中删除该活动。我认为你遇到的问题是,当用户点击后退按钮时,你完成了(),当用户点击你的UI上的PREVIOUS BUTTON时,你没有完成()。所以,无论如何,要跟踪你的活动后台堆栈 - 这是决定该应用程序是否真正完成的关键。

话虽如此,Android不鼓励您明确退出应用程序。系统将在需要资源时负责销毁应用程序。

答案 1 :(得分:1)

问题中的后退按钮行为是正确的。

finish()是退出活动的正确方法。默认的onBackPressed()实现就是这样做的。在活动退出后,转到活动堆栈中的上一个活动是正确的方式。只有当活动堆栈为空时,后退按钮才会将用户从应用程序中取出。

在某些情况下,使用适当的Intent标志在开始新活动时清除现有活动的后备堆栈可能是合适的。有关详细信息,请参阅guide

此外,这是关于应用退出的规范性问题:Is quitting an application frowned upon?

答案 2 :(得分:-1)

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();
    System.exit()
}

System.exit()将帮助您关闭应用

答案 3 :(得分:-2)

 @Override
public void onBackPressed() {
  // TODO Auto-generated method stub
  super.onBackPressed();
  System.exit(0)
 }