-1

我创建了一个 Android 应用程序。

当我点击手机上的后退按钮时,我需要关闭或退出我的应用程序。

我怎样才能做到这一点?

4

6 回答 6

5

您必须处理后退按钮功能

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();
    finish();
}
于 2013-04-05T09:30:02.417 回答
3

当您按下后退按钮时,活动将从堆栈中弹出并销毁。堆栈中的前一个活动获得焦点。

假设您有 3 个活动。A、B 和 C。您导航到 C。A 到 B 到 c。您可以使用以下代码从 C 导航到 A。

您可以覆盖按下的后退按钮并调用finish().

如果您在活动 A 中,您只需按返回按钮即可退出。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
    onBackPressed();

}

return super.onKeyDown(keyCode, event);
  }

 public void onBackPressed() {
Intent myIntent = new Intent(C.this, A.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//clear the backstack
startActivity(myIntent);
finish();
return;
   }

编辑:

stackoverflow 上的一些开发人员和一些人认为后退按钮至少应该回到上一个活动。它应该是那样的。因此,覆盖默认功能并清除回栈可能不是一个好主意。

您可能还想考虑使用导航抽屉

http://developer.android.com/design/patterns/navigation.html

还要检查这个

退出应用程序不受欢迎吗?

于 2013-04-05T09:11:09.800 回答
2
@Override
public void onBackPressed() {
  this.finish();
}

试试这个

假设您在某些内部活动中,请在应用程序类上设置一些布尔值,并在所有其他活动的简历中检查该布尔值,然后在设置布尔值时完成它

于 2013-04-05T09:10:44.463 回答
1

您不需要调用任何方法来关闭应用程序;Android会照顾它。每当您按下后退按钮时,finish()都会调用该按钮Activity并销毁活动。你问的不是Service对吗?因为服务在后台运行,您必须根据需要关闭服务。

于 2013-04-05T09:25:43.883 回答
1

请阅读 CommonsWare 的这个答案:退出应用程序是否令人不悦?

它很好地解释了为什么这不是Android 应用程序设计的好方法。结论:

同样,我建议您不要尝试将您的应用程序移植到 Web,因为您在 Android 上报告的一些相同问题也会在 Web 应用程序中发现(例如,没有“终止”)。或者反过来说,如果你确实将应用程序移植到 Web 上,你可能会发现 Web 应用程序的流程可能更适合 Android,那时你可以重新访问 Android 端口。

于 2013-04-05T09:36:47.183 回答
-1

试试这个。

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {

        finish();
    }
    return false;
}
于 2013-04-05T09:12:01.840 回答