2012-07-15 41 views
2

我想知道處理應用程序超時的最佳方式(如PayPal)是什麼。我希望用戶選擇1分鐘,5分鐘或15分鐘的超時時間,因此當他們打開應用程序時,他們必須重新登錄。在Android中創建和處理應用程序超時

我的onResume方法:

​​

它什麼也沒有。但它崩潰。

作爲說明:我的應用程序有兩個活動。第一項活動是登錄屏幕。第二個活動是主屏幕。 onResume方法在第二個活動中。

+0

你試過了什麼?知道你到目前爲止使用的方法將幫助我們確定最適合你的方法。 – Eric 2012-07-15 22:18:15

+0

如果身份驗證基於HTTP傳輸(一個android客戶端 - http服務器通信),那麼最好在http級別(通過http API,像HttpClient)管理會話超時,而不是在應用程序的UI級別。 – yorkw 2012-07-15 22:41:52

+0

我只嘗試過一種方法,那就是有一個開始「路由」活動。它會根據您離開應用程序的時間長短將您路由到適當的屏幕。此外,爲了迴應約克,這個應用程序完全是本地的,沒有外部連接。 – EGHDK 2012-07-15 23:04:08

回答

8

我做這在我的應用程序之一:

你需要一個基礎的活動爲您的所有活動將延長。在此基本活動中,添加一個跟蹤「上次用戶活動」時間戳記的變量。就我而言,用戶活動僅僅意味着他們觸摸屏幕。因此,重寫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 
    } 
} 
+0

我添加了'dispatchTouchEvent',並添加了'onResume'方法。但是,我的應用程序正在冒泡。我在if語句中敬酒。我的錯誤消息似乎是'RuntimeException:無法恢復活動'。有任何想法嗎? – EGHDK 2012-08-01 19:14:34

+0

你可以發佈你的onResume()方法,並指出它崩潰的那一行嗎? – azgolfer 2012-08-01 20:02:20

+0

是的,更新了我的問題。謝謝 – EGHDK 2012-08-01 20:11:56

0

我會在應用程序運行並處於活動狀態時使用心跳計時器,並跟蹤當前時間(或上一次活動時間 - 任一時間)。當應用從用戶點擊主頁按鈕進入後臺時(或退出 - 不知道如何處理後退按鈕) - 通過將值保存到共享首選項來記住該值。當應用程序啓動或恢復時,您可以將當前時間與保存的時間進行比較,如果增量大於「x」,則可以將用戶導向登錄屏幕。確保您關注主要活動中的onPause,onResume,onStop,onDestroy事件。我會親自使用System.currentTimeMillis作爲時間戳,然後根據您的時間(秒,分鐘等)適當地比較毫秒和相除。

相關問題