您的位置:首页 > 移动开发 > Android开发

Android 点击两次返回键退出程序

2017-08-14 00:00 387 查看
[java]
view plain
copy

<span style="font-size:14px;">package com.test.twiceexit;

import java.util.Timer;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.view.KeyEvent;

import android.view.Menu;

import android.widget.Toast;

public class MainActivity extends Activity {

private static Boolean isQuit = false;

private long mExitTime = 0;

Timer timer = new Timer();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

/**************************************************

* 方法一

* ************************************************/

// @Override

// public boolean onKeyDown(int keyCode, KeyEvent event) {

// if (keyCode == KeyEvent.KEYCODE_BACK) {

// if (isQuit == false) {

// isQuit = true;

// Toast.makeText(getBaseContext(), "再按一次返回键退出程序",

// Toast.LENGTH_SHORT).show();

// TimerTask task = null;

// task = new TimerTask() {

// public void run() {

// isQuit = false;

// }

// };

// timer.schedule(task, 2000);

// } else {

// finish();

// System.exit(0);

// }

// }

// return false;

// }

/**************************************************

* 方法二

* ************************************************/

// @Override

// public boolean onKeyDown(int keyCode, KeyEvent event) {

// if (keyCode == KeyEvent.KEYCODE_BACK) {

// if ((System.currentTimeMillis() - mExitTime) > 2000) {//

// // 如果两次按键时间间隔大于2000毫秒,则不退出

// Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();

// mExitTime = System.currentTimeMillis();// 更新mExitTime

// } else {

// System.exit(0);// 否则退出程序

// }

// return true;

// }

// return super.onKeyDown(keyCode, event);

//

// }

/**************************************************

* 方法三

* ************************************************/

Handler mHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

isQuit = false;

}

};

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK) {

if (!isQuit) {

isQuit = true;

Toast.makeText(getApplicationContext(), "再按一次退出程序",

Toast.LENGTH_SHORT).show();

// 利用handler延迟发送更改状态信息

mHandler.sendEmptyMessageDelayed(0, 2000);

} else {

finish();

System.exit(0);

}

}

return false;

}

}

</span>

推荐使用第二种,该方法相对来说降低系统消耗!
源码地址:http://download.csdn.net/detail/dadaxiaoxiaode/5815849

ref:http://blog.csdn.net/yelangjueqi/article/details/9472705 http://blog.csdn.net/h7870181/article/details/8906596
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: