Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Back鍵點擊兩次退出應用詳解及實現方法總結

Android Back鍵點擊兩次退出應用詳解及實現方法總結

日期:2016/3/15 12:02:45      編輯:關於Android編程

思路:Android中捕獲用戶按鍵是在onKeyDown方法中,只需要判斷用戶按鍵是否是KEYCODE_BACK即後退鍵即可,剩下的即為判斷兩次點擊BACK鍵時間間隔問題了

第一種實現方式

 package com.example.clickexittest; 

  import android.app.Activity; 
  import android.os.Bundle; 
  import android.os.Handler; 
  import android.os.Message; 
  import android.util.Log; 
  import android.view.KeyEvent; 
  import android.widget.Toast; 

  public class MainActivity extends Activity { 

    private static final String TAG = MainActivity_Exit.class.getSimpleName(); 

    // 定義一個變量,來標識是否退出 
    private static boolean isExit = false; 

    private static Handler mHandler = new Handler() { 

      @Override 
      public void handleMessage(Message msg) { 
        super.handleMessage(msg); 
        isExit = false; 
      } 
    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
      if (keyCode == KeyEvent.KEYCODE_BACK) { 
        exit(); 
        return true; 
      } 
      return super.onKeyDown(keyCode, event); 
    } 

    private void exit() { 
      if (!isExit) { 
        isExit = true; 
        Toast.makeText(getApplicationContext(), "再按一次後退鍵退出程序", 
            Toast.LENGTH_SHORT).show(); 
        // 利用handler延遲發送更改狀態信息 
        mHandler.sendEmptyMessageDelayed(0, 2000); 
      } else { 

        Log.e(TAG, "exit application"); 

        this.finish(); 
      } 
    } 
  }

在exit方法中,會首先判斷isExit的值,如果為false的話,則置為true,同時會彈出提示,並在2000毫秒(2秒)後發出一個消息,在 Handler中將此值還原成false。如果在發送消息間隔的2秒內,再次按了BACK鍵,則再次執行exit方法,此時isExit的值已為 true,則會執行退出的方法。

第二種實現方式

 package com.example.clickexittest; 

  import android.app.Activity; 
  import android.os.Bundle; 
  import android.util.Log; 
  import android.view.KeyEvent; 
  import android.widget.Toast; 

  public class MainActivity extends Activity { 

    private static final String TAG = MainActivity.class.getSimpleName(); 

    private long clickTime = 0; //記錄第一次點擊的時間 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
      if (keyCode == KeyEvent.KEYCODE_BACK) { 
        exit(); 
        return true; 
      } 
      return super.onKeyDown(keyCode, event); 
    } 

    private void exit() { 
      if ((System.currentTimeMillis() - clickTime) > 2000) { 
        Toast.makeText(getApplicationContext(), "再按一次後退鍵退出程序", 
            Toast.LENGTH_SHORT).show(); 
        clickTime = System.currentTimeMillis(); 
      } else { 
        Log.e(TAG, "exit application"); 
        this.finish(); 
  //     System.exit(0); 
      } 
    } 
  }

判斷用戶兩次按鍵的時間差是否在一個預期值之內,是的話直接直接退出,不是的話提示用戶再按一次後退鍵退出。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved