2016-07-28 52 views
-2

我已經創建了一個應用程序。我想在用戶退出應用程序或應用程序在後臺運行一段時間後自動從應用程序註銷。我創建了計時器,但它不起作用,因爲當應用程序進入onStop()計時器也成爲停止。我應該爲這個問題做些什麼?Android註銷計時器

+0

你試過了什麼? –

+0

我開發了一個庫來照顧這種類型的用例,請隨時看一下 https://github.com/jose96043/TimezOut – joseporto

回答

0

使所有的Activities擴展一個BaseActivity。然後在這個BaseActivity聲明pausedMillis paramater:

private long pausedMillis; 

之後重寫onStop方法:

@Override 
protected void onStop() { 
    super.onStop(); 
    pausedMillis = Calendar.getInstance().getTimeInMillis(); 
} 

最終覆蓋onResume方法:

@Override 
public void onResume(){ 
    super.onResume(); 

    try { 
     long currentMillis = Calendar.getInstance().getTimeInMillis(); 
     if (!(this instanceof LoginActivity) && currentMillis - pausedMillis > 1000 * 60 * 3) { 
      Intent intent = new Intent(this, LoginActivity.class); 
      intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(intent); 
      finish(); 
      Toast.makeText(BaseActivity.this, getString(R.string.logout_string), Toast.LENGTH_LONG).show(); 
     } 
    } catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 

如果這將註銷您的應用程序超過3分鐘後臺。快樂編碼:)

+0

對我來說很好用 – Malik

0

您需要提供服務才能註銷,並使用AlarmManager以及該服務的PendingIntent在特定時間段後啓動。以下是一個示例代碼:

AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
Intent m_intent = new Intent(this, YourService.class); 
PendingIntent pi = PendingIntent.getService(this, 2, m_intent, 0); 
alarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timePeriod, pi); 

將退出代碼放入YourService