我有使用自動鎖定(需要密碼輸入畫面)的應用程序...將密碼畫面添加到設備睡眠時重新鎖定的應用程序中?
a) when the app starts for the first time
b) when another app is started and takes over the device
c) when the device "sleeps" automatically
d) when the user "sleeps" the device manually
(note: with c & d, if the user "awakens" the app within 5 seconds, it does NOT ask for the password)
我想對,所以我創建了一個活動,我寫以及一個應用程序做到這一點( PasswordActivity
)進行必要的驗證步驟,並使其正常工作。
我原來把它放在MainActivity
的ONCREATE
(這是在AndroidManifest中發射的)。這似乎很好。但隨後開始重新鎖定能力。所以試着將它移動到ONSTART
或ONRESUME
。但是當我的應用程序中的另一個活動聚焦或屏幕旋轉時,PasswordActivity
再次發射。這是行不通的。
在這裏我發現了一個線程推薦使其成爲清單中的LAUNCHER應用程序,然後在密碼正常時調用MainActivity。這似乎工作得更好......但後來遇到了一個問題,只有當用戶按下主屏幕後退按鈕(我假設停止我的應用程序)並再次啓動應用程序時,它纔會「重新鎖定」。儘管如此,不會抓住另一個APP來接管設備。
因此,基於這一點以及在查看所有可以在生命週期中找到的文檔(儘管大部分文檔都是基於ACTIVITY的,而不是基於APPLICATION的),但當APP本身失去焦點時(另一個應用接管)以及如何處理自動或手動睡眠(上面的C &)以及延時檢查。我假設這將是幾個呼叫或步驟的組合,但不確定在這一點上究竟是哪一個。
有什麼建議嗎?
我認爲,當你的應用程序在背景上(失去焦點),函數'onPause'被執行。這就是你要求的? – UDKOX
'OnPause'從我所知道的(並且已經在線閱讀了關於LIFECYCLES的消息,當一個活動失去焦點時...不一定是APP本身。如果我試圖在'onPause'中捕獲它,當另一個活動在我的內部 – Peter
難道你不能只檢查另一個Activity是否有焦點嗎?例如:'public void onPause(){if(!hasAnotherActivityFocus()){lockPassword();}}' – UDKOX