2012-03-07 97 views
1

我正在構建一個本地android應用程序,我希望用戶在一段不活動時間後說5分鐘後自動註銷(類型會話超時)。Android應用程序中的自動註銷功能

它是一個獨立的應用程序,並在應用程序中有多個屏幕。我沒有維護與服務器的任何用戶會話。

P.S:我在writing a time out event for android找到了一個可能的解決方案。但是,這僅適用於單個活動應用程序。任何人都可以爲多活動應用程序提出類似的解決方案嗎?

+0

更多細節可以幫助人們回答這個問題。他們登錄到了什麼地方?是否有網絡請求?一個簡單的解決方案可能是簡單地將時間戳存儲在某個檢查過期時間的地方,您可以在onPause中寫入時間戳,然後在onResume中檢查它,並且您的整個應用程序都可以訪問它。 – Theblacknight 2012-03-07 13:00:34

+0

@Theblacknight我正在調用REST Web服務在登錄時對用戶進行身份驗證。除此之外,在各種屏幕上還有更多的Web服務調用來檢索/存儲某些信息。但是,這是獨立的應用程序,我沒有維護任何用戶會話。 – 2012-03-07 13:52:45

回答

0

好的,爲了響應你發佈的鏈接,爲什麼不按照這個方法,而是創建某種抽象基本活動,所有其他活動擴展。所以基本上你會爲每個活動增加一個超時,但你的基本活動將處理這個,你的孩子活動不需要知道發生了什麼。

0
public class LogoutService extends Service { 
    public static CountDownTimer timer; 
@Override 
public void onCreate(){ 
    // TODO Auto-generated method stub 
    super.onCreate(); 
     timer = new CountDownTimer(1 *60 * 1000, 1000) { 
      public void onTick(long millisUntilFinished) { 
       //Some code 
       Log.v(Constants.TAG, "Service Started"); 
      } 

      public void onFinish() { 
       Log.v(Constants.TAG, "Call Logout by Service"); 
       // Code for Logout 
       stopSelf(); 
      } 
     }; 
} 
@Override 
public IBinder onBind(Intent intent) { 
    // TODO Auto-generated method stub 
    return null; 
} 
} 
And then Add the below code in every activity. 

@Override 
protected void onResume() { 
// TODO Auto-generated method stub 
super.onResume(); 

LogoutService.timer.start(); 
} 

@Override 
protected void onStop() { 
// TODO Auto-generated method stub 
super.onStop(); 
LogoutService.timer.cancel(); 
}