蘋果iOS
按一次home鍵,返回主界面。雙擊home鍵,出現後台運行程式。長
按home鍵,在iPhone3GS(第三代)和iPhone4(第四代)中會開啟“語音控制”,在iPhone4S(第五代)、iPhone5(第六代)、第三代與第四代iPad中將會開啟Siri語音助手。按電源鍵3秒後,同時按住home鍵10秒,鬆開電源鍵,保持home鍵15秒,進入DFU模式(越獄用)。連按3下home鍵的功能可以自定義。
在蘋果的iPhone 5s中,原先的home鍵已改為Touch ID指紋識別感測器,不過依然可以按下。iPhone 5s在“home鍵”上加入了全新的指紋識別模組,原本home鍵內部的方框也隨之消失,取而代之的是一個不鏽鋼指紋檢測環。
Android上的home鍵
常見用法:
按一次返回主螢幕,或進入所有應用程式界面; 按home鍵不動,顯示最近打開的應用程式。
細節:
正在執行某應用程式的時候,當你按下手機的Home鍵的時候,系統會默認調用程式棧中最上層Activity的stop()方法,然後整個應用程式都會被隱藏起來,當你再次點擊手機桌面上該應用程式圖示時,系統會調用最上層Activity的OnResume()方法,此時不會重新打開程式,而是直接進入。會直接顯示程式棧中最上層的Activity。可是視為應用程式的“暫停”,”停止“(需要應用程式的支持)。
home 和 back 鍵的區別
在Android中,當按下Home鍵,默認情況下stop前台的actiity,即activity設定成onstop,而不是ondestory。如果再次啟動該activity不是調用onCreate,而是調用onSavedInstanceState方法,保持上次Activity的狀態則是從onRestart開始->onStart->onResume;而當按下back鍵則不同,back鍵默認finish前台的activity,即activity的狀態為onDestory為止,再次啟動該activity則從onCreate開始,不會調用onSavedInstanceState方法。
開發人員相關,捕獲home的方法:
1. 在activity中加上這段代碼就可以禁止home鍵(onKeyDown事件會捕捉到home鍵)。
-------------------------------------------------
public void onAttachedToWindow()
{
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
public void onAttachedToWindow()
{
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
2.因為android系統自己對與home鍵power鍵在PhoneWindowManager中做了處理,不會返回到上層套用的。以下為系統源碼:
\frameworks\policies\base\phone\com\android\internal\policy\impl\PhoneWindowManager.java 1089行
if (code == KeyEvent.KEYCODE_HOME) {
// If a system window has focus, then it doesn't make sense
// right now to interact with applications.
WindowManager.LayoutParams attrs = win != null ? win.getAttrs() : null;
if (attrs != null) {
final int type = attrs.type;
if (type == WindowManager.LayoutParams.TYPE_KEYGUARD
|| type == WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG) {
// the "app" is keyguard, so give it the key
return false;
}
final int typeCount = WINDOW_TYPES_WHERE_HOME_DOESNT_WORK.length;
for (int i=0; i
if (type == WINDOW_TYPES_WHERE_HOME_DOESNT_WORK) { // don't do anything, but also don't pass it to the app return true; } } } \frameworks\policies\base\phone\com\android\internal\policy\impl\PhoneWindowManager.java 1089行 if (code == KeyEvent.KEYCODE_HOME) { // If a system window has focus, then it doesn't make sense // right now to interact with applications. WindowManager.LayoutParams attrs = win != null ? win.getAttrs() : null; if (attrs != null) { final int type = attrs.type; if (type == WindowManager.LayoutParams.TYPE_KEYGUARD || type == WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG) { // the "app" is keyguard, so give it the key return false; } final int typeCount = WINDOW_TYPES_WHERE_HOME_DOESNT_WORK.length; for (int i=0; i