[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 Http请求失败解决方法
  2. Glide的with()方法和生命周期的源码分析
  3. android TelephonyManager类的方法
  4. android更新UI的几种方法
  5. android 调用 Menu 两种方法
  6. Android打开微信小程序
  7. Android手机开发:开机自动启动程序

随机推荐

  1. Android(安卓)Studio老是提示重启ADB解决
  2. Android电话系统之RIL-Java
  3. Android 后台保活,这里有你需要的所有姿势
  4. Android剪切板(ClipboardManager)复制文
  5. android代码实现关机
  6. Android market 发布个人免费应用的步骤
  7. Android之Bundle传递数据详解与实例及Bun
  8. Android深入浅出系列课程---Lesson0 SHW1
  9. Smalidea+IntelliJ IDEA/Android Studio
  10. Android中使用apache commons-net发送后