Android 點選兩次返回鍵退出程式

-柚子皮-發表於2014-05-24
[java] view plaincopy
  1. <span style="font-size:14px;">package com.test.twiceexit;  
  2.   
  3. import java.util.Timer;  
  4.   
  5. import android.app.Activity;  
  6. import android.os.Bundle;  
  7. import android.os.Handler;  
  8. import android.os.Message;  
  9. import android.view.KeyEvent;  
  10. import android.view.Menu;  
  11. import android.widget.Toast;  
  12.   
  13.   
  14. public class MainActivity extends Activity {  
  15.     private static Boolean isQuit = false;  
  16.     private long mExitTime = 0;  
  17.   
  18.     Timer timer = new Timer();  
  19.   
  20.     @Override  
  21.     protected void onCreate(Bundle savedInstanceState) {  
  22.         super.onCreate(savedInstanceState);  
  23.         setContentView(R.layout.activity_main);  
  24.     }  
  25.   
  26.     @Override  
  27.     public boolean onCreateOptionsMenu(Menu menu) {  
  28.         // Inflate the menu; this adds items to the action bar if it is present.  
  29.         getMenuInflater().inflate(R.menu.main, menu);  
  30.         return true;  
  31.     }  
  32.   
  33.     /************************************************** 
  34.      *                      方法一 
  35.      * ************************************************/  
  36. //  @Override  
  37. //  public boolean onKeyDown(int keyCode, KeyEvent event) {  
  38. //      if (keyCode == KeyEvent.KEYCODE_BACK) {  
  39. //          if (isQuit == false) {  
  40. //              isQuit = true;  
  41. //              Toast.makeText(getBaseContext(), "再按一次返回鍵退出程式",  
  42. //                      Toast.LENGTH_SHORT).show();  
  43. //              TimerTask task = null;  
  44. //              task = new TimerTask() {  
  45. //                  public void run() {  
  46. //                      isQuit = false;  
  47. //                  }  
  48. //              };  
  49. //              timer.schedule(task, 2000);  
  50. //          } else {  
  51. //              finish();  
  52. //              System.exit(0);  
  53. //          }  
  54. //      }  
  55. //      return false;  
  56. //  }  
  57.   
  58.     /************************************************** 
  59.      *                      方法二 
  60.      * ************************************************/  
  61. //  @Override  
  62. //  public boolean onKeyDown(int keyCode, KeyEvent event) {  
  63. //      if (keyCode == KeyEvent.KEYCODE_BACK) {  
  64. //          if ((System.currentTimeMillis() - mExitTime) > 2000) {//  
  65. //              // 如果兩次按鍵時間間隔大於2000毫秒,則不退出  
  66. //              Toast.makeText(this, "再按一次退出程式", Toast.LENGTH_SHORT).show();  
  67. //              mExitTime = System.currentTimeMillis();// 更新mExitTime  
  68. //          } else {  
  69. //              System.exit(0);// 否則退出程式  
  70. //          }  
  71. //          return true;  
  72. //      }  
  73. //      return super.onKeyDown(keyCode, event);  
  74. //  
  75. //  }  
  76.   
  77.     /************************************************** 
  78.      *                      方法三 
  79.      * ************************************************/  
  80.     Handler mHandler = new Handler() {  
  81.         @Override  
  82.         public void handleMessage(Message msg) {  
  83.             super.handleMessage(msg);  
  84.             isQuit = false;  
  85.         }  
  86.     };  
  87.   
  88.     @Override  
  89.     public boolean onKeyDown(int keyCode, KeyEvent event) {  
  90.         if (keyCode == KeyEvent.KEYCODE_BACK) {  
  91.             if (!isQuit) {  
  92.                 isQuit = true;  
  93.                 Toast.makeText(getApplicationContext(), "再按一次退出程式",  
  94.                         Toast.LENGTH_SHORT).show();  
  95.                 // 利用handler延遲傳送更改狀態資訊  
  96.                 mHandler.sendEmptyMessageDelayed(02000);  
  97.             } else {  
  98.                 finish();  
  99.                 System.exit(0);  
  100.             }  
  101.         }  
  102.         return false;  
  103.     }  
  104. }  
  105. </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

相關文章