我想知道處理應用程序超時的最佳方式(如PayPal)是什麼。我希望用戶選擇1分鐘,5分鐘或15分鐘的超時時間,因此當他們打開應用程序時,他們必須重新登錄。在Android中創建和處理應用程序超時
我的onResume方法:
它什麼也沒有。但它崩潰。
作爲說明:我的應用程序有兩個活動。第一項活動是登錄屏幕。第二個活動是主屏幕。 onResume方法在第二個活動中。
我想知道處理應用程序超時的最佳方式(如PayPal)是什麼。我希望用戶選擇1分鐘,5分鐘或15分鐘的超時時間,因此當他們打開應用程序時,他們必須重新登錄。在Android中創建和處理應用程序超時
我的onResume方法:
它什麼也沒有。但它崩潰。
作爲說明:我的應用程序有兩個活動。第一項活動是登錄屏幕。第二個活動是主屏幕。 onResume方法在第二個活動中。
我做這在我的應用程序之一:
你需要一個基礎的活動爲您的所有活動將延長。在此基本活動中,添加一個跟蹤「上次用戶活動」時間戳記的變量。就我而言,用戶活動僅僅意味着他們觸摸屏幕。因此,重寫dispatchTouchEvent(MotionEvent ev)方法,並將「上次用戶活動」設置爲當前時間戳。
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
lastActivity = new Date().getTime();
return super.dispatchTouchEvent(ev);
}
然後該基活性的的onResume()方法,只是用比較「最後用戶活動」時間戳當前時間戳。如果超過1分鐘,5分鐘或15分鐘(可由用戶配置),則啓動另一個活動以要求用戶登錄。
@Override
public void onResume() {
long now = new Date().getTime();
if (now - lastActivity > xxxx) {
// startActivity and force logon
}
}
我會在應用程序運行並處於活動狀態時使用心跳計時器,並跟蹤當前時間(或上一次活動時間 - 任一時間)。當應用從用戶點擊主頁按鈕進入後臺時(或退出 - 不知道如何處理後退按鈕) - 通過將值保存到共享首選項來記住該值。當應用程序啓動或恢復時,您可以將當前時間與保存的時間進行比較,如果增量大於「x」,則可以將用戶導向登錄屏幕。確保您關注主要活動中的onPause,onResume,onStop,onDestroy事件。我會親自使用System.currentTimeMillis作爲時間戳,然後根據您的時間(秒,分鐘等)適當地比較毫秒和相除。
你試過了什麼?知道你到目前爲止使用的方法將幫助我們確定最適合你的方法。 – Eric 2012-07-15 22:18:15
如果身份驗證基於HTTP傳輸(一個android客戶端 - http服務器通信),那麼最好在http級別(通過http API,像HttpClient)管理會話超時,而不是在應用程序的UI級別。 – yorkw 2012-07-15 22:41:52
我只嘗試過一種方法,那就是有一個開始「路由」活動。它會根據您離開應用程序的時間長短將您路由到適當的屏幕。此外,爲了迴應約克,這個應用程序完全是本地的,沒有外部連接。 – EGHDK 2012-07-15 23:04:08