在这里,最主要的是覆写onKeyDown(int, KeyEvent)方法。
对于实现在一定时间内再按一次退出,思路可以如下:
编写一个辅助类,里面有成员变量boolean isWillExit,当它为true时,则再按一次返回键退出。第一次按返回键时,isWillExit设置为true,再编写一个Runnable实例,在指定时间后设置isWillExit为false。
详细看代码吧。代码如下:
以下代码在Activity中
- 1.Exit exit = new Exit();
- 2.// ...
- 3.@Override
- 4.public boolean onKeyDown(int keyCode, KeyEvent event) {
- 5. if (keyCode == KeyEvent.KEYCODE_BACK) {
- 6. pressAgainExit();
- 7. return true;
- 8. }
- 9. return super.onKeyDown(keyCode, event);
- 10.}
- 11.
- 12./**
- 13. * 再按一次退出程序。
- 14. */
- 15.private void pressAgainExit() {
- 16. if (exit.isExit()) {
- 17. finish();
- 18. } else {
- 19. Toast.makeText(getApplicationContext(), "再按一次退出程序",
- 20. 1000).show();
- 21. exit.doExitInOneSecond();
- 22. }
- 23.}
下面是一个辅助类。
- 1.class Exit {
- 2. private boolean isExit = false;
- 3. private Runnable task = new Runnable() {
- 4. @Override
- 5. public void run() {
- 6. isExit = false;
- 7. }
- 8. };
- 9.
- 10. public void doExitInOneSecond() {
- 11. isExit = true;
- 12. HandlerThread thread = new HandlerThread("doTask");
- 13. thread.start();
- 14. new Handler(thread.getLooper()).postDelayed(task, 1000);
- 15. }
- 16.
- 17. public boolean isExit() {
- 18. return isExit;
- 19. }
- 20.
- 21. public void setExit(boolean isExit) {
- 22. this.isExit = isExit;
- 23. }
- 24.}
转载于:https://blog.51cto.com/whatandroid/874142