當用戶切換到另一個選項卡或最小化其瀏覽器窗口時,您確實不希望在「應用程序」在後臺進行註銷時退出用戶,而不是退出Web應用程序的用戶片刻。如果您要在Web應用程序中執行這些任何一項操作,那麼您的用戶會認爲您的Web應用程序是史詩般的失敗。同樣,如果用戶撥打了錯誤號碼的電話,或者鬧鐘響了,他們會很生氣,如果他們必須馬上回去登錄,並且在他們剛剛使用您的應用程序時登錄5秒鐘。在這裏,通過「惱火」,我指的是市場上的一星評級和討厭的評論。
Web應用程序自動註銷基於不活動,使用服務器會話cookie。
同樣,當我建立一個安全的Android應用程序,我將實現一個基於活動的機制,或許是這樣的:
第1步:用一個靜態的單一實例創建Session
類。 Session
對象保存上次訪問的時間戳。
步驟2:在每個活動的onResume()
中,查看Session
單身是否存在。如果不是,這是一個全新的過程,所以如果這不是身份驗證活動,請立即執行startActivity()
以啓動身份驗證活動。
步驟3:返回每個活動的onResume()
,如果存在Session
對象,請撥打extend()
之類的東西。這將返回一個boolean
,true
表明會話仍然良好(並且時間戳已經更新到現在),否則返回false
。如果返回false
,請執行與Session
對象爲null
相同的操作。
步驟#4:您的驗證活動成功後,使用當前時間戳設置單身人士Session
對象。
步驟#5:您的Session
分類'extend()
方法是您確定會話是否過舊的地方。
無論用戶如何進入應用程序,如果會話太舊(或者它是一個全新的進程),它們都會被強制進行身份驗證。但是,如果用戶暫時中斷 - 您和/或用戶可以在其中簡要定義 - 他們不必重新進行身份驗證。
哎呀,這就是我的意思,我想在分鐘後自動註銷,而不是每次應用程序進入後臺時註銷。對於類似的問題,其中一個建議是在後臺運行一項服務,並將BroadCast發送給我的所有實施廣播接收器的活動,但這是一個更好的方法。 –
2011-04-30 19:52:38
@Tejaswi Yerukalapudi:是的,服務和接收方法會相當重量級。 – CommonsWare 2011-04-30 22:02:17
某些應用程序在進入後臺時會退出,例如銀行應用程序。只是我的意見... – 2012-04-04 09:28:44