首先,定义一个变量,用于计算用户两次按下返回键的时间差:
long exitTime=0;// 退出时间
然后就是一个捕捉用户按下返回键的事件:
/** 捕捉按下返回键操作 */
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO 按两次返回键退出应用程序
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// 判断间隔时间 大于2秒就退出应用
if ((System.currentTimeMillis() - exitTime) > 2000) {
// 应用名
String applicationName = getResources().getString(
R.string.app_name);
String msg = "再按一次返回键退出" + applicationName;
//String msg1 = "再按一次返回键回到桌面";
Toast.makeText(MainActivity.this, msg, 0).show();
// 计算两次返回键按下的时间差
exitTime = System.currentTimeMillis();
} else {
// 关闭应用程序
finish();
// 返回桌面操作
// Intent home = new Intent(Intent.ACTION_MAIN);
// home.addCategory(Intent.CATEGORY_HOME);
// startActivity(home);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
法一:实现方式,通过记录按键时间计算时间差实现:
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.Toast;
public class MainActivity extends Activity {
private long exitTime = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
exit();
return false;
}
return super.onKeyDown(keyCode, event);
}
public void exit() {
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序",
Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();
System.exit(0);
}
}
}
直接在二级界面退出程序
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.Toast;
public class ejjm extends Activity {
private long exitTime = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ejjm);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
exit();
return false;
}
return super.onKeyDown(keyCode, event);
}
public void exit() {
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序",
Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();
System.exit(0);
}
}
}
文章转自:https://www.cnblogs.com/rainday1/p/5444237.html
http://blog.csdn.net/qq_27485253/article/details/45274351