[java] view plain copy
  1. <spanstyle="font-size:14px;">packagecom.test.twiceexit;
  2. importjava.util.Timer;
  3. importandroid.app.Activity;
  4. importandroid.os.Bundle;
  5. importandroid.os.Handler;
  6. importandroid.os.Message;
  7. importandroid.view.KeyEvent;
  8. importandroid.view.Menu;
  9. importandroid.widget.Toast;
  10. publicclassMainActivityextendsActivity{
  11. privatestaticBooleanisQuit=false;
  12. privatelongmExitTime=0;
  13. Timertimer=newTimer();
  14. @Override
  15. protectedvoidonCreate(BundlesavedInstanceState){
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.activity_main);
  18. }
  19. @Override
  20. publicbooleanonCreateOptionsMenu(Menumenu){
  21. //Inflatethemenu;thisaddsitemstotheactionbarifitispresent.
  22. getMenuInflater().inflate(R.menu.main,menu);
  23. returntrue;
  24. }
  25. /**************************************************
  26. *方法一
  27. *************************************************/
  28. //@Override
  29. //publicbooleanonKeyDown(intkeyCode,KeyEventevent){
  30. //if(keyCode==KeyEvent.KEYCODE_BACK){
  31. //if(isQuit==false){
  32. //isQuit=true;
  33. //Toast.makeText(getBaseContext(),"再按一次返回键退出程序",
  34. //Toast.LENGTH_SHORT).show();
  35. //TimerTasktask=null;
  36. //task=newTimerTask(){
  37. //publicvoidrun(){
  38. //isQuit=false;
  39. //}
  40. //};
  41. //timer.schedule(task,2000);
  42. //}else{
  43. //finish();
  44. //System.exit(0);
  45. //}
  46. //}
  47. //returnfalse;
  48. //}
  49. /**************************************************
  50. *方法二
  51. *************************************************/
  52. //@Override
  53. //publicbooleanonKeyDown(intkeyCode,KeyEventevent){
  54. //if(keyCode==KeyEvent.KEYCODE_BACK){
  55. //if((System.currentTimeMillis()-mExitTime)>2000){//
  56. ////如果两次按键时间间隔大于2000毫秒,则不退出
  57. //Toast.makeText(this,"再按一次退出程序",Toast.LENGTH_SHORT).show();
  58. //mExitTime=System.currentTimeMillis();//更新mExitTime
  59. //}else{
  60. //System.exit(0);//否则退出程序
  61. //}
  62. //returntrue;
  63. //}
  64. //returnsuper.onKeyDown(keyCode,event);
  65. //
  66. //}
  67. /**************************************************
  68. *方法三
  69. *************************************************/
  70. HandlermHandler=newHandler(){
  71. @Override
  72. publicvoidhandleMessage(Messagemsg){
  73. super.handleMessage(msg);
  74. isQuit=false;
  75. }
  76. };
  77. @Override
  78. publicbooleanonKeyDown(intkeyCode,KeyEventevent){
  79. if(keyCode==KeyEvent.KEYCODE_BACK){
  80. if(!isQuit){
  81. isQuit=true;
  82. Toast.makeText(getApplicationContext(),"再按一次退出程序",
  83. Toast.LENGTH_SHORT).show();
  84. //利用handler延迟发送更改状态信息
  85. mHandler.sendEmptyMessageDelayed(0,2000);
  86. }else{
  87. finish();
  88. System.exit(0);
  89. }
  90. }
  91. returnfalse;
  92. }
  93. }
  94. </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

更多相关文章

  1. Android(安卓)WebView使用全面解析(加载网络资源、本地HTML,JS交互
  2. android TelephonyManager类的方法
  3. Android方法的传递值及其改变
  4. Android(安卓)正确进入全屏和退出全屏的姿势
  5. android中的定时器
  6. Android(安卓)Http请求失败解决方法
  7. Glide的with()方法和生命周期的源码分析
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. Android(安卓)Things:用户驱动-输入驱动
  2. Android(安卓)兼容性 | 充分利用新款 And
  3. Android修炼之混淆
  4. ANDROID缩略图Thumbnails
  5. 深度剖析 | 阿里热修复如何精简优化补丁
  6. 摄像头的使用之(Camera的使用)
  7. Android中AsyncTask的简单总结
  8. Android实现滑动的七种方法实践
  9. 分享Android(安卓)recovery updater-scri
  10. 如何测试并调试基于 NDK 的 Android(安卓