在接收廣播中的處理爲:String reason = intent.getStringExtra("reason");
if (reason.equals("homekey")) {
// "home press"
}
if (reason.equals("recentapps")) {
// "home double click"
}
ps:當屏幕超時進行鎖屏時;當用戶按下電源按鈕,長按或短按(不管有沒跳出話框),進行鎖屏時;android系統都會廣播此Action(ACTION_CLOSE_SYSTEM_DIALOGS)消息。
此廣播是在frameworks\base\services\java\com\android\server\am\ActivityManagerService.java裏發送的Intent.ACTION_CLOSE_SYSTEM_DIALOGS
(2)在android低版本的SDK中,還有另一種方式可以獲取HOME鍵的按下事件:
在activity中重寫方法onAttachedToWindow():
@Override
public void onAttachedToWindow() {
getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
然後在onKeyDown()函數中根據入參keyCode判斷是否有HOME鍵的動作觸發。(3)利用activity的onSaveInstance(Bundle outstate)方法,在界面暫時退出時,可將一些需要備份的數據保存到outstate中;下次再次啓動該activity時,從onCreate的入參中取備份的數據。