Home鍵

Home鍵

Home鍵是微軟Windows作業系統、蘋果iOS作業系統、谷歌安卓作業系統中具有返回功能的鍵。按一次返回主螢幕,或進入所有應用程式界面; 按home鍵不動,顯示最近打開的應用程式。正在執行某應用程式的時候,當你按下手機的Home鍵的時候,系統會默認調用程式棧中最上層Activity的stop()方法,然後整個應用程式都會被隱藏起來,當你再次點擊手機桌面上該應用程式圖示時,系統會調用最上層Activity的OnResume()方法,此時不會重新打開程式,而是直接進入。在Android中,當按下Home鍵,默認情況下stop前台的actiity,即activity設定成onstop,而不是ondestory。

基本信息

蘋果iOS

iPhone 4s中的home鍵iPhone 4s中的home鍵

按一次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

相關詞條

相關搜尋

熱門詞條

聯絡我們