Android 再按一次返回鍵退出的第三種方式

jopen 11年前發布 | 21K 次閱讀 Android Android開發 移動開發

這里給出的,只是另一種實現思路。網上也看到其他方式,原理都是延時判斷。

  網上已經有了其他方式,個人感覺,onKeyDown里面,盡量減少操作,便有了下面的實現思路。

  使用Handler進行實現,在onKeyDown里面只需要發送一條消息,其他操作全交給handleMessage去處理就ok。

首先,定義Handler及事件和等待時長:

private static final int MSG_EXIT = 1;
private static final int MSG_EXIT_WAIT = 2;
private static final long EXIT_DELAY_TIME = 2000;
private Handler mHandle = new Handler() {
    public void handleMessage(Message msg) {
        switch(msg.what) {
            case MSG_EXIT:
                if(mHandle.hasMessages(MSG_EXIT_WAIT)) {
                    finish();
                } else {    
                    Toast.makeText(MainActivity.this, "再按一次返回鍵退出", Toast.LENGTH_SHORT).show();
                    mHandle.sendEmptyMessageDelayed(MSG_EXIT_WAIT, EXIT_DELAY_TIME);
                }
                break;
            case MSG_EXIT_WAIT:
                break;
        }
    }
};

 其次,重載onKeyDown:

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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!