實驗幾次之后(android4.1 和android4.2)發現在單個的activity里面有以下幾個方法可以使用:
方法1:onSaveInstanceState方法
下面這個方法可以處理home的監聽問題。
protected void onSaveInstanceState(Bundle outState)
但這個方法不是很好,不推薦
方法2:onUserLeaveHint方法
@Override protected void onUserLeaveHint() { Log.d("aeon","onUserLeaveHint"); super.onUserLeaveHint(); }
這個方法會在onSaveInstanceState之前執行,根據api的解釋,這個方法還比較合適的。
方法3:ACTION_CLOSE_SYSTEM_DIALOGS
在使用廣播監聽方面可以使用ACTION_CLOSE_SYSTEM_DIALOGS
//注冊Receiver HomeKeyEventBroadCastReceiver receiver = new HomeKeyEventBroadCastReceiver(); registerReceiver(receiver, new IntentFilter( Intent. ACTION_CLOSE_SYSTEM_DIALOGS));
方法4:framework PhoneWindowManager.java 處理
想要完全監聽home鍵需要在framework層去處理。
/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
里面去修改private void handleLongPressOnHome() 這個方法。
只要把handleLongPressOnHome里面做出相對應的處理就ok