Android防误按返回退出程序

来源:互联网 发布:古罗马下水道 知乎 编辑:程序博客网 时间:2024/06/15 07:45
1、按返回时弹出退出提示@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubLog.e("OtherActivity", "onKeyDown, keyCode: "+keyCode);if (keyCode == KeyEvent.KEYCODE_BACK) {ShowExitTooltip(OtherActivity.this);return true;}return super.onKeyDown(keyCode, event);}public static void ShowExitTooltip(Context context) {AlertDialog.Builder builder = new Builder(context);builder.setMessage("确定要退出吗?");builder.setTitle("提示");builder.setIcon(android.R.drawable.ic_dialog_alert);builder.setPositiveButton("确认",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {dialog.dismiss();android.os.Process.killProcess(android.os.Process.myPid());}});builder.setNegativeButton("取消",new android.content.DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.create().show();}2、提示双击返回退出A:利用Handler延迟发送更改状态信息// 定义一个变量,来标识是否退出private static boolean isExit = false;Handler mHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);isExit = false;}};@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {exit();return false;}return super.onKeyDown(keyCode, event);}private void exit() {if (!isExit) {isExit = true;Toast.makeText(getApplicationContext(), "双击退出程序", Toast.LENGTH_SHORT).show();// 利用handler延迟发送更改状态信息mHandler.sendEmptyMessageDelayed(0, 2000);} else {finish();System.exit(0);}}B:通过记录按键时间计算时间差实现private long exitTime = 0;@Overridepublic 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);}}


0 0
原创粉丝点击