我创建了一个Android应用。
当我从手机上点击后退按钮时,我需要关闭或退出我的应用程序。
我怎样才能做到这一点?
答案 0 :(得分:5)
你必须处理后退按钮功能
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
finish();
}
答案 1 :(得分: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
同时检查此
答案 2 :(得分:2)
@Override
public void onBackPressed() {
this.finish();
}
试试这个
假设你在某些内部活动中在Application Class上设置一些布尔值,并在每个其他活动的恢复中检查该布尔值,然后在设置布尔值时完成它
答案 3 :(得分:1)
您无需调用任何方法来关闭应用; Android会照顾它。每当您按下后退按钮时,finish()
上都会调用Activity
,并且活动将被销毁。你不是在问Service
对吗?因为服务在后台运行,您必须根据需要关闭服务。
答案 4 :(得分:1)
Pleeeease阅读CommonsWare的回答:Is quitting an application frowned upon?
这是一个非常好的细分,为什么这是不一个Android应用程序设计的好方法。结论:
同样地,我会建议你不要试图移植你的 应用程序到Web,因为你遇到了一些相同的问题 使用Android报告,您也可以在网络应用中找到(例如,没有 “终止”)。或者,相反,有一天,如果你把你的应用程序移植到 Web,您可能会发现Web应用程序的流程可能更适合 Android,您可以在那时重新访问Android端口。
答案 5 :(得分:-1)
试试这个。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
finish();
}
return false;
}