我创建了一个 Android 应用程序。
当我点击手机上的后退按钮时,我需要关闭或退出我的应用程序。
我怎样才能做到这一点?
您必须处理后退按钮功能
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
finish();
}
当您按下后退按钮时,活动将从堆栈中弹出并销毁。堆栈中的前一个活动获得焦点。
假设您有 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
还要检查这个
@Override
public void onBackPressed() {
this.finish();
}
试试这个
假设您在某些内部活动中,请在应用程序类上设置一些布尔值,并在所有其他活动的简历中检查该布尔值,然后在设置布尔值时完成它
您不需要调用任何方法来关闭应用程序;Android会照顾它。每当您按下后退按钮时,finish()
都会调用该按钮Activity
并销毁活动。你问的不是Service
对吗?因为服务在后台运行,您必须根据需要关闭服务。
请阅读 CommonsWare 的这个答案:退出应用程序是否令人不悦?
它很好地解释了为什么这不是Android 应用程序设计的好方法。结论:
同样,我建议您不要尝试将您的应用程序移植到 Web,因为您在 Android 上报告的一些相同问题也会在 Web 应用程序中发现(例如,没有“终止”)。或者反过来说,如果你确实将应用程序移植到 Web 上,你可能会发现 Web 应用程序的流程可能更适合 Android,那时你可以重新访问 Android 端口。
试试这个。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
finish();
}
return false;
}