最近在開發中遇到一個問題就是當有時按下android手機的物理返回鍵時跳轉的不是本身想要的頁面,因此決定重寫下android的手機返回鍵。因此當時就用了onBackPressed,結果很差用因而改onKeyDown仍是沒法調用該方法。後來發現原來我用的是avtivityGroup而不是activity,因而改爲dispatchKeyEvent終於解決了問題。好了我來總結下:
@Override public void onBackPressed() { // 這裏處理邏輯代碼,你們注意:該方法僅適用於2.0或更新版的sdk return; }
這是android2.0以後出的(其實如今不多再去考慮2.0以前的版本了)能夠直接在activity中捕獲android的返回鍵,(但貌似只有activity中能夠觸發,activityGroup,listActivity,tabActivity好像很差用)android
public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 這裏寫本身的操做,此方法兼容Android 1.0到Android 2.1 } }
此方法兼容Android 1.0到Android 2.1 也能夠直接在activity中捕獲android的返回鍵,(但同onBackPressed同樣,貌似只有activity中能夠觸發,activityGroup,listActivity,tabActivity好像很差用)ide
@Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction()==KeyEvent.ACTION_DOWN){ //本身的操做 return false; } return super.dispatchKeyEvent(event); }
當鍵盤按下時
首先觸發dispatchKeyEvent
而後觸發onUserInteraction
再次onKeyDown
若是按下緊接着鬆開,則是倆步
緊跟着觸發dispatchKeyEvent
而後觸發onUserInteraction
再次onKeyUp
因此dispatchKeyEvent只是監控案件無論是activity仍是activitygroup都會觸發。spa
監聽androi物理返回鍵的方法固然還有不少,以上只是我的看法,經驗不足,歡迎多多指教。code